2017-11-24 19 views
1

重複機能を削除しました。重複レコードが削除されます。しかし、私はそれを少なくとも1つコピーしたい。オブジェクトに1つを保持して重複レコードを削除します。

例:

var myArr = [{"Country":"China","Rank":"2"},{"Country":"USA","Rank":"2"},{"Country":"China","Rank":"2"}]; 

O/P = [{"Country":"China","Rank":"2"},{"Country":"USA","Rank":"2"}] 

私は "国" に基づいて削除しています。元のレコードを維持し、唯一の重複を削除する方法

マイコード

removeDuplicates : function(myArr, Country) { 
     var finalArray = []; 
     var values = []; 
     var value; 
     for (var i = 0; i < myArr.length; i++) { 
      value = myArr[i][Country]; 

      if (values.indexOf(value) === -1) { 
       finalArray.push(myArr[i]); 
       values.push(value); 
      } 
     } 
     return finalArray; 
    }, 

+2

可能な重複(https://stackoverflow.com/questions/2218999/remove-duplicates-from-an-array-of-objects-in-javascript ) –

答えて

0

は、私がここで見つける&減らす使用することになり、この

var result=[]; 
myArr.map(function(x){ 
      if(myArr.filter(y=>y.Country==x.Country).length==1 || (result.filter(r=>r.Country==x.Country).length==0)) 
      result.push(x); 
}) 
console.log(result); 
+0

これはIEと互換性がないと思います。しかし、ありがたいと私にチェックさせてください – David

+0

Array.prototype.mapは新しい配列を返す関数であり、スコープの外に配列を持つ必要はありません。 –

0

のようなものを試してみてください。 [JavaScriptでオブジェクトの配列から重複を削除]の

const myArr = [{"Country":"China","Rank":"2"},{"Country":"USA","Rank":"2"},{"Country":"China","Rank":"2"}]; 

const newArr = myArr.reduce((prev, cur) => { 
    if (prev.find((i) => i.Country === cur.Country)) return prev; 
    prev.push(cur); 
    return prev; 
}, []); 
関連する問題