请问 如何用相对简单(或者说最简单)的方法 过滤一个数组

遇到的面试题 请教下大家
过滤一下数组(用相对简单的方法)
希望过滤掉所有对象中id相同的对象(只要id相同就去掉 不管姓名是什么),即 保证每个对象的id不同 如果有id相同的对象 移除下标较大的 最后返回新数组result

let arr = [{id:'1',name:'姓名1'},{id:'1',name:'姓名2'},{id:'3',name:'姓名3'},{id:'4',name:'姓名4'}.......]

//result是过滤后的数组
const result = ...
阅读 1.5k
3 个回答
let arr = [{id:'1',name:'姓名1'},{id:'1',name:'姓名2'},{id:'3',name:'姓名3'},{id:'4',name:'姓名4'}]

const userIds=new Set();

arr.reduce((filteredUsers,user)=>{
    if(!userIds.has(user.id)){
    userIds.add(user.id);
    filteredUsers.push(user);
    }    
    return filteredUsers;
    
},[])

供参考

const result = [...arr.reduce((m, x) => m.set(x.id, m.get(x.id) || x), new Map()).values()]
const result = [...new Map(arr.map(e=>[e.id,e]).reverse()).values()].reverse();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题