2017-01-10 15 views
0

私はこの投稿をチェックしています。How can I find matching values in two arrays? しかし、それは私を助けませんでした。私は本当にそれを取得しません。だから、もし私がここで私の問題を説明すると、誰かがそれを解決するのを助けることができます。javascript配列内の値の一致

私は学校のプロジェクトを持っています(自分の場所、タグ、人気度などについてユーザーと一致させることになっています)。 2つの場所のアルゴリズムを使用する前に、最初の非正確な並べ替えが必要です。 「パリ」や「パリ」のような値)

マイサーチ機能は、[]内の2 {}で私を返すので、私の最初の検索値に関して一致2人(男女)

は、私はそこにありますNode.jsを使用して、私のデータベースはMySQLであり、私の関数はコールバックと約束を使用しています。

だから、これは私の第一の目的である(それは私の検索者の情報が含まれています)

[ RowDataPacket { 
id: 34, 
username: 'natedogg', 
latitude: 48.8835, 
longitude: 2.3219, 
country: 'France', 
city: 'Paris', 
zipcode: 75017 } ] 

これが第二1(それは2人のユーザーを含む)

[ RowDataPacket { 
id: 33, 
username: 'pablito', 
latitude: 48.8921, 
longitude: 2.31922, 
country: 'France', 
city: 'Paris', 
zipcode: 75017 }, 
RowDataPacket { 
id: 35, 
username: 'tupac', 
latitude: 48.8534, 
longitude: 2.3488, 
country: 'France', 
city: 'levallois', 
zipcode: 92300 } ] 

どのようにすることができます私はこのデータを持っていないです検索者の場所が==私のotherUsersLocationかどうかを確認します(1つ以上の場所であっても) ありがとうございます!

+0

を見つけることができた方法です2番目の配列と一致するので、最初の配列は一致しますが、2番目の配列は一致しません。 – pkerckho

+0

@Cruiser私はさらに解決策を試しましたが、機能しません。 (都市=== searcherLoc [0]。[city]){ console.log( "working?"); '(都市内の潜在的な場所){ for searcherLoc { if } } } ' 私はdbの値を変更しましたが、何もログに記録できません。 – pkerckho

答えて

1

基本的には、最初のオブジェクト(検索データ)と2番目の配列(ユーザーデータ)のオブジェクトを比較したいと思うようです。文字列や数値などのデータより複雑なデータがあるため、2つの配列を直接比較する必要はありません。

は、私がこのような何かをするだろう、プレーンJavaScriptでオブジェクトを比較するには:私は働くあなたのためにいくつかのコードを、後処理し

// loop through each object in user array 
for (object in secondArray) { 

    // loop through each property in the user object 
    for (property in object) { 

     // compare the property of user object with corresponding search object property 
     if (property === firstArray[0][property]) { 
      // do something 
     } 
    } 
} 
+0

答えに感謝しています[0]。[プロパティ]、予期しないトークン['私は本当に理由がわからない – pkerckho

+0

@pkerckho私は私の答えを編集しました。私は 'firstArray [0]。[property]'の代わりに 'firstArray [0] [property]'と言う必要がありました。うまくいけばそれは今働きます!私のブラウザのコンソールで設定すると、私のためになります! –

+1

@Tomas Juranek、私はこのように修正しました: 'if(SecondArray){ // console.log(SecondArray.length); SecondArray.forEach(関数(要素){ (firstArrayと[0] .city === element.city){ はconsole.log( "要素)場合、 }}) }'私もしようとあなたあなたの助けをありがとう! – pkerckho

0

を、あなたは自分の状況に適用することができるはずです。基本的に、私たちは検索したいオブジェクトをループし、 "city"プロパティを見ています。私はいくつかの変数の名前を変更して、何がより明確になるようにしました。

var data = { 
    id: 34, 
    username: 'natedogg', 
    latitude: 48.8835, 
    longitude: 2.3219, 
    country: 'France', 
    city: 'Paris', 
    zipcode: 75017 
}; 

var searchable = [{ 
    id: 33, 
    username: 'pablito', 
    latitude: 48.8921, 
    longitude: 2.31922, 
    country: 'France', 
    city: 'Paris', 
    zipcode: 75017 }, 
    { 
    id: 35, 
    username: 'tupac', 
    latitude: 48.8534, 
    longitude: 2.3488, 
    country: 'France', 
    city: 'levallois', 
    zipcode: 92300 
}]; 

// this array is just to save obj when we have a match 
var found =[]; 
// loop through each element in our searchable array 
for(var i=0;i<searchable.length;++i){ 
    if(data["city"] == searchable[i]["city"]){ 
     // did we find it? push it onto the found array 
     console.log("found: " + searchable[i]["city"]); 
     found.push(searchable[i]["username"]);} 
} 
// look to see if we got what we wanted 
console.log(found); 

この手順に従うと、データ内のすべてのものを照合することができます。

+0

ありがとうございました!それは私が探していたものです!私は今夜私の問題を解決しました。私はほんの数分前に投稿した解決策で解決しました。もう一度このアイデアを使用してください – pkerckho

+0

ちょっと!私はちょっとアイデアがうまくいっていると言いたかったのですが、助けてくれてありがとう、今日は似たようなことをしていますが、うまくいきません。 2つの配列の間にあるが、私は配列の値に正しくループすることはできません。 tは素晴らしいでしょう! – pkerckho

0

これは私が `firstArrayと[0] .city == secondArray [0] .city.`を試してみました。しかし、ここで私はthwo .cityを持って、私の配列で一致する値 if (SecondArray){ // console.log(SecondArray.length); SecondArray.forEach(function(element) { if (firstArray[0].city === element.city) { console.log("element); } }) }

関連する問題