3 回答

TA貢獻1906條經(jīng)驗 獲得超10個贊
function arrUnique(arr) {
var cleaned = [];
arr.forEach(function(itm) {
var unique = true;
cleaned.forEach(function(itm2) {
if (_.isEqual(itm, itm2)) unique = false;
});
if (unique) cleaned.push(itm);
});
return cleaned;
}
var standardsList = arrUnique(standardsList);
這將返回
var standardsList = [
{"Grade": "Math K", "Domain": "Counting & Cardinality"},
{"Grade": "Math K", "Domain": "Geometry"},
{"Grade": "Math 1", "Domain": "Counting & Cardinality"},
{"Grade": "Math 1", "Domain": "Orders of Operation"},
{"Grade": "Math 2", "Domain": "Geometry"}
];
您到底要哪個?

TA貢獻1841條經(jīng)驗 獲得超3個贊
恢復了一個老問題,但是我想在@adeneo的答案上發(fā)布一個迭代。這個答案是完全籠統(tǒng)的,但是對于這種用例,它可能會更有效(在我的機器上有數(shù)千個對象的數(shù)組中,速度很慢)。如果您知道需要比較的對象的特定屬性,則直接比較它們:
var sl = standardsList;
var out = [];
for (var i = 0, l = sl.length; i < l; i++) {
var unique = true;
for (var j = 0, k = out.length; j < k; j++) {
if ((sl[i].Grade === out[j].Grade) && (sl[i].Domain === out[j].Domain)) {
unique = false;
}
}
if (unique) {
out.push(sl[i]);
}
}
console.log(sl.length); // 10
console.log(out.length); // 5
添加回答
舉報