在一个复杂的数组对象数据中,有时候去过滤掉重复的数组,在网上搜到的,感觉挺好用的,也没有多深入研究,直接拿来用了(捂脸)
function deteleObject(obj) {
var uniques = [];
var stringify = {};
for (var i = 0; i < obj.length; i++) {
var keys = Object.keys(obj[i]);
keys.sort(function(a, b) {
return (Number(a) - Number(b));
});
var str = '';
for (var j = 0; j < keys.length; j++) {
str += JSON.stringify(keys[j]);
str += JSON.stringify(obj[i][keys[j]]);
}
if (!stringify.hasOwnProperty(str)) {
uniques.push(obj[i]);
stringify[str] = true;
}
}
uniques = uniques;
return uniques;
}
方法使用:
①、先定义一个数组
let arr = [
{
key: 1,
value: 'a',
children: null
},
{
key: 2,
value: 'b',
children: null
},
{
key: 3,
value: 'c',
children: null
},
{
key: 2,
value: 'b',
children: null
},
{
key: 4,
value: 'b',
children: null
},
{
key: 3,
value: 'c',
children: null
}
]
②、直接调用去重方法
需要注意的是数组去重,就是对象中所有字段的值重复一样才可以去重掉,有一项不同则不可以,如下: