2016-09-26 15 views
0

私は2つのオブジェクトの配列を持っています。 同じ要素の配列をチェックしてから3番目の配列に移動する

さんが言ってみましょう:

arr1 = [object, object, object]; 

arr2 = [object, object, object]; 

どのように私はそれらを反復処理すると、同じオブジェクトのプロパティの値をチェックして、3番目の配列の中に押し込みください。 私はこれを試してみました:

for(var i = 0; i < arr1.length; i++){ 
    for(var j = 0; j < arr2.length; j++){ 
     if (arr1[i].id == arr2[j].id){ 
      arr3.push(arr1[i]) 
    } 
    } 

これはしかし

+0

どの部分が機能しないのですか?コンソールのエラーはありますか?それは私には妥当と思われる。どのようなアウトプットを手に入れますか?あなたは実際に、同じ 'id'で一致するオブジェクトを実際に持っていますか? – musefan

+0

両方の配列のオブジェクトは同じ順序ですか? –

+0

@MBいいえ、そうではありません、それは問題ですか? –

答えて

3

動作しない、あなたのif文、それが動作する他のウ・タントに閉じ中括弧が欠落している:あなたドン場合

for(var i = 0; i < arr1.length; i++){ 
    for(var j = 0; j < arr2.length; j++){ 
     if (arr1[i].id == arr2[j].id){ 
      arr3.push(arr1[i]) 
     } 
    } 
} 
+0

私はそれがそうでなければタイプミスであったと思う。そうでなければ構文エラーが出るだろう –

+0

あなたのコードを実行して、それが固定セミコロンで動作しないなら、あなたのオブジェクトのデータ – StackOverMySoul

1

サードパーティのlibsを使って気にしないでください。lodashにはあなたのためにそれを行う機能があります。

例えば、

var arr3 = _.intersectionWith(arr1,arr2,function (a,b) { return a.id === b.id }) 
1

1つしか必要ない場合(またはまったくない場合)にループをネストするのはなぜですか?

arr1.forEach(object => { 
    if (arr2.indexOf(object) !== -1) { 
     arr3.push(object); 
    } 
}); 
関連する問題