2016-12-23 16 views
1

私は、2つの配列オブジェクトの特定の値を比較する方法について、混乱していますが、その無視された値を配列として取得します。2つの配列オブジェクトの特定の文字列を比較するには?

var Arr1 = [ 
{ 
    jobId:"j1" 
}, 
{ 
    jobId:"j2" 
}, 
{ 
    jobId:"j3" 
}, 
{ 
    jobId:"j4" 
}, 

] 

var Arr2 = [ 
{ 
    jobId:"j1" 
}, 
{ 
    jobId:"j2" 
}, 

] 

私はこのように私の結果をしたい...

//neglected values 

[ 
    { 
    jobId:"j3" 
}, 
{ 
    jobId:"j4" 
}, 
] 

答えて

3
  • をそれでは、二つの配列で物事を比較については移動する方法について考えてみましょう。
  • おそらく両方の配列を完全に比較すると仮定すると、それらを反復する必要があります。各配列の各項目を比較して確実に確認してください。
  • - ループを入れ子にする。どうして?最初の配列を繰り返し処理するので、最初の配列にヒットする各インデックスに対して、2番目の配列のすべての要素を繰り返し処理します。
  • Arr1 [i] === Arr2 [j]のような条件付きの基本ロジックを作成して、オブジェクトの1つを配列にプッシュすることができます。
+0

@torazaburoは、高度なユーザーのためのより良い答えを持っていますが、この答えはOPがちょうど学んでいることを考慮すれば良いです。 – RayfenWindspear

+0

@RayfenWindspear私は同意する、彼の答えは良い、私は意図的に彼は彼が始まったと言ったので、このようにした。ループの2倍を視覚化し始めたときに、より良く理解できるようになったのを覚えているからです。それをフィルタリングすることは、よりスマートなアプローチです。 – cheussy

2

フィルター(Array#filter)最初の配列の要素ダウン(!)一部(Array#some)、一致するジョブが存在しないいるものに2番目の配列のID。ライン・バイ・ラインコメントスタイル使用

Arr1.filter(arr1Elt => !Arr2.some(arr2Elt => arr2Elt.jobId === arr1Elt.jobId)) 

Arr1        // From Arr1, 
    .filter(      // keep 
    arr1Elt =>     // elements for which 
     !       // it is not the case that 
     Arr2      // Arr2 has 
     .some(     // some 
      arr2Elt =>    // elements for which 
      arr2Elt.jobId  // the job ID 
      ===     // is equal to 
      arr1Elt.jobId  // the job ID from the first array. 
     ) 
) 
1

あなたはARR1Array.prototype.filterを使用し、そのエントリのいずれかがArray.prototype.someを使用してARR2であるかどうかを確認することができます - デモ下記を参照してください:あなたはlodash年代を使用することができます

var Arr1=[{jobId:"j1"},{jobId:"j2"},{jobId:"j3"},{jobId:"j4"}]; 
 
var Arr2=[{jobId:"j1"},{jobId:"j2"}]; 
 

 
var result = Arr1.filter(function(e){ 
 
    return !Arr2.some(function(k){ 
 
    return k.jobId === e.jobId; 
 
    }); 
 
}); 
 

 
console.log(result);

2

_.differenceBy() から項目が見つからない場合はArr2になります。

var Arr1 = [{"jobId":"j1"},{"jobId":"j2"},{"jobId":"j3"},{"jobId":"j4"}]; 
 
var Arr2 = [{"jobId":"j1"},{"jobId":"j2"}]; 
 

 
// find items that are in Arr1, but not in Arr2, compare items by their jobId 
 
var result = _.differenceBy(Arr1, Arr2 , 'jobId'); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.3/lodash.min.js"></script>

関連する問題