/**
* 数组中每个元素为对象,根据对象的一个/多个字段去重,从第二个参数不分先后逐个传入
* 比较的字段数据格式要一致
*/
function arrObjUnique(ary) {
ary = [].concat(ary); // 复制数组,防止改变原数组
var args = Array.prototype.slice.call(arguments)
,condition = function(l, r) {
var ary = [];
for (var i = 1; i < args.length; i ++) {
ary.push('ary['+ l +']["'+ args[i] +'"] === ary['+ r +']["'+ args[i] +'"]');
}
return ary.join('&&');
}
for (var i = 0; i < ary.length - 1; i++) {
for (var j = i + 1; j < ary.length; j++) {
if (eval(condition(i, j))) {
ary.splice(j, 1);
//因为数组长度减小1,所以直接 j++ 会漏掉一个元素,所以要 j--
j--;
}
}
}
return ary;
};
数组中每个元素为对象,根据对象的一个/多个字段去重
最新推荐文章于 2024-04-16 14:44:33 发布