这个问题在这里已有答案:
我尝试制作一个独特的对象数组。我尝试了很多解决方案。最后写一个函数。它有效,但还有其他解决方案吗?而美元。不单独工作?
var a = [{"id": "id1", "name": "id1"},{"id": "id1", "name": "id1"},{"id": "id2", "name": "id2"}];
var jq = $.unique(a);
console.log("jq=",jq); // NOT UNIQUE!?
var myfunc = unique(a);
console.log("myfunc=",myfunc); // UNIQUE!
function unique(arr){
var uniqueArr=[];
var jsonarr = [];
$.each(arr,function(ax, a){
var j = JSON.stringify(a);
if( jsonarr.indexOf(j) == -1 ){
jsonarr.push(j);
uniqueArr.push(a);
}
});
return uniqueArr;
}
lodash库有一个实现
_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 1 }, { 'x': 2 }]