明天给大家介绍三种数组对象去重的办法,简略不便
有这么一组数组对象

let arr = [{        id: '1',        key: '1',        value: '明月'      }, {        id: '3',        key: '2',        value: '可欣'      }, {        id: '2',        key: '3',        value: '小红'      }, {        id: '1',        key: '1',        value: '小馨'      }, {        id: '1',        key: '2',        value: '小静'      }]

1、对象拜访属性的办法

let newArr = [];    let obj = {};    for (var i = 0; i < arr.length; i++) {       if (!obj[arr[i].key]) {         newArr.push(arr[i])         obj[arr[i].key] = true       }    }console.log(newArr);

2、Map()办法

set办法设置key所对应的键值,而后返回整个Map构造。如果key曾经有值,则键值会被更新,否则就新生成该键。
values办法能够返回Map对象值的遍历器对象

let map = new Map();for (let item of this.arr) {    map.set(item.id, item); } this.arr = [...map.values()]; console.log(this.arr)

3、reduce() 办法

reduce() 办法接管一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

参数形容
total必须。初始值, 或者计算完结后的返回值。
currentValue必须。以后元素
currentIndex可选。以后元素的索引
arr可选。以后元素所属的数组对象。
initialValue可选。传递给函数的初始值
const obj = {}arr = arr.reduce((total, next) => {  obj[next.key] ? '' : obj[next.key] = true && total.push(next)  return total}, [])console.log(arr)

这里还有一个需要,如果有两个或者多个判断条件,给数组对象去重,加一个判断条件就行了

const hasObj = {}arr = arr.reduce((total, next) => {   const filterKey = next.key + next.id;   hasObj[filterKey] ? "" : hasObj[filterKey] = true && total.push(next)   return total}, [])console.log(arr)

心愿能够帮忙到你!