为了账号安全,请及时绑定邮箱和手机立即绑定

es6的Set如何自定义去重规则?对象数组如何根据某一列属性去重?

es6的Set如何自定义去重规则?对象数组如何根据某一列属性去重?

牛魔王的故事 2019-03-21 18:15:29
比如根据a数组元素中的name属性去重这是最简洁的方法了吗?function unique(arr) {    const res = new Map();    return arr.filter((a) => !res.has(a.name) && res.set(a.name, 1))}引用: https://segmentfault.com/q/10...
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

没看懂题目,但如果按照给出代码的话来看,这个可能更简洁一点。

const arrayUniq = (x) => [...new Set(x)];


查看完整回答
反对 回复 2019-03-28
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

就是Set对象里的每一个数据地址不同,即为不同的对象!
对象类型的数组,如定义:[{a:1,b:2},{a:1,b:3},{a:1,b:2}] 过滤之后还是三个对象;
但是 如果你是 let obj = {a:1,b:2}; arr.push(obj);这样放进去 最终会被过滤掉冗余的,只剩一个

const arrayUniq = (x) => [...new Set(x)];
let arr1 = [{a:1,b:2},{a:1,b:3},{a:1,b:2}];
let arr2 = [{a:1,b:3}];
let obj = {a:1,b:2};
arr2.push(obj);
arr2.push(obj);

arrayUniq(arr1);
//[{a:1,b:2},{a:1,b:3},{a:1,b:2}]
arrayUniq (arr2);
//[{a:1,b:2},{a:1,b:3}]


查看完整回答
反对 回复 2019-03-28
  • 3 回答
  • 0 关注
  • 1957 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号