1.对象数组去重:
$(document).ready(function(){
let data = [
{ id: 201801, name: '张三', age: 15, },
{ id: 201804, name: 'John', age: 18, },
{ id: 201802, name: '李四', age: 18, },
{ id: 201801, name: '张三', age: 15, },
{ id: 201805, name: 'Jack', age: 18, },
{ id: 201803, name: '王五', age: 10, },
{ id: 201805, name: 'Jack', age: 18, },
{ id: 201804, name: 'John', age: 18, },
{ id: 201805, name: 'Jack', age: 18, },
];
let hash = {};
data = data.reduce(function(preVal, curVal) {
hash[curVal.id] ? ' ' : hash[curVal.id] = true && preVal.push(curVal);
return preVal
}, []);
console.log(333,data);
});
2.普通数组去重的几种方法:
(1)数组去重:
function unique(arr, type) {
const res = new Map();
return arr.filter((a) => !res.has(a[type]) && res.set(a[type], 1));
}
var result = [];
result = uniqueFun(arr,"id");
(2)数组去空:
var aa = ["12", "34", "", "423", " "];
//$.grep() 函数使用指定的函数过滤数组中的元素,并返回过滤后的数组。
var newArr = $.grep(aa, function(n) {return $.trim(n).length > 0;});
console.log(newArr);
(3)数组去空:
var aa = ["12", "34", "", "423", " "];
var aaa = aa.filter(s => $.trim(s).length > 0);
console.log(aaa);
(4)过滤数组的重复值:
var xAsix = [];
for(var i = 0; i < data.length; i++){
var items=data[i].attributes[pname];
if($.inArray(items,xAsix)==-1) {
xAsix.push(data[i].attributes[pname]);
}
}
console.log(xAsix );