从一个数组中删除重复对象

您所在的位置:网站首页 js删除数组重复元素 从一个数组中删除重复对象

从一个数组中删除重复对象

2023-07-22 04:04| 来源: 网络整理| 查看: 265

JSON.stringify(value[, replacer [, space]]) value:将要序列化成 一个 JSON 字符串的值。 replacer:如果 replacer 是一个数组,数组的值代表将被序列化成 JSON 字符串的属性名

 

也就是说,可以通过 JSON.stringify的第二个参数指定按一定的顺序来序列化,例如

const goodsList = [ // 注意比较首尾元素对象中内部属性的顺序 { goodsCode: '2611201047G', goodsName: '华为畅享9 Plus 4GB+128GB 极光紫 双卡 全网通版 JKM-AL00' }, { goodsCode: '2611201418G', goodsName: 'HUAWEInova5i 8GB+128GB 苏音蓝 全网通版' }, { goodsName: '华为畅享9 Plus 4GB+128GB 极光紫 双卡 全网通版 JKM-AL00', goodsCode: '2611201047G' } ] console.log(JSON.stringify(goodsList, ['goodsName', 'goodsCode'])); /* [ {"goodsName":"华为畅享9 Plus 4GB+128GB 极光紫 双卡 全网通版 JKM-AL00","goodsCode":"2611201047G"}, {"goodsName":"HUAWEInova5i 8GB+128GB 苏音蓝 全网通版","goodsCode":"2611201418G"}, {"goodsName":"华为畅享9 Plus 4GB+128GB 极光紫 双卡 全网通版 JKM-AL00","goodsCode":"2611201047G"} ] */

 

由此可见,只需要把 getUnique2() 稍作修改,就可以产生最佳的解决方案了

function getUnique2(arr) { const map = {}; // 1、把数组元素作为对象的键存起来(这样就算有重复的元素,也会相互替换掉) arr.forEach(item => map[JSON.stringify(item, ['goodsCode', 'goodsName'])] = item); // 2、再把新对象的键名抽成一个数组返回即为不重复的集合 return Object.keys(map).map(key => JSON.parse(key)) } console.log(getUnique2(goodsList)); /* [ {goodsCode: "2611201047G", goodsName: "华为畅享9 Plus 4GB+128GB 极光紫 双卡 全网通版 JKM-AL00"}, {goodsCode: "2611201418G", goodsName: "HUAWEInova5i 8GB+128GB 苏音蓝 全网通版"} ] */

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3