最近项目数据涮选的时候可以支持复选,所以会出现重复数据问题。对于简单的数组类型,比如[1, 2, 4, 2, 4, 3, 1]可以用es6 Array.from或者new Set,但是我现在的数据是数组对象复杂类型如
[{'name': 'xiaoming', 'age': 19},{'name': 'zhansan', 'age': 22},{'age': 22, 'name': 'zhansan'},{'name': 'xiaoming', 'age': 19},{'age': 19, 'name': 'xiaoming'}]
对于这种数据类型如果用es6或者普通的方法([...new Set(arr)]),会发现没有实现去重功能,推荐用lodash或者深层递归,但是相对比较复杂,而实际业务中往往数据格式相同所以可以用下面这种方法试试,敲黑板,前提是数据格式相同。
function unique(arr) {
let result = {};
let finalResult = [];
for (let i = 0; i < arr.length; i++) {
result[arr[i].name] = arr[i];
}
for (item in result) {
finalResult.push(result[item]);
}
return finalResult;
}
console.log(unique(arr));