本文共 1357 字,大约阅读时间需要 4 分钟。
方法一:对象访问属性法
通过遍历数组,检查对象中是否存在对应的键值。如果不存在,则将该对象添加到结果数组中。
var arr = [{key: '01', value: '乐乐'}, {key: '02', value: '博博'}, {key: '03', value: '淘淘'}, {key: '04', value: '哈哈'}, {key: '01', value: '乐乐'}]; var result = []; var obj = {}; for (var i = 0; i < arr.length; i++) { var key = arr[i].key; if (!obj.hasOwnProperty(key)) { obj[key] = arr[i]; result.push(obj[key]); } } 方法二:数组reduce方法
利用数组的reduce方法,逐一处理数组中的每个对象,检查对象中是否存在对应的键值。如果不存在,则将该对象添加到结果数组中。
var arr = [{key: '01', value: '乐乐'}, {key: '02', value: '博博'}, {key: '03', value: '淘淘'}, {key: '04', value: '哈哈'}, {key: '01', value: '乐乐'}]; var result = arr.reduce(function (acc, current) { var key = current.key; if (!acc.hasOwnProperty(key)) { acc[key] = current; return acc; } else { return acc; } }, {}); 方法三:ES6 Set去重
通过遍历数组,使用ES6 Set数据结构记录已存在的键值,逐一过滤出唯一的对象数组。
let arr = [{id: 1, name: 'm'}, {id: 2, name: 'mu'}, {id: 4, name: 'muz'}, {id: 2, name: 'muzi'}]; let idSet = new Set(); let newArr = arr.filter(function (obj) { const existingId = idSet.has(obj.id); idSet.add(obj.id); return !existingId; }); console.log(newArr); // [{id: 1, name: 'm'}, {id: 2, name: 'mu'}, {id: 4, name: 'muz'}] 转载地址:http://oetr.baihongyu.com/