js数组对象去重问题

451 阅读1分钟

最近项目数据涮选的时候可以支持复选,所以会出现重复数据问题。对于简单的数组类型,比如[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));