求助!两个数组对象比较键值对,再做替换的问题

我太菜了,试了一些遍历,替换都没有达到想要的效果,
各位大佬,能否指点下有什么方法,把目前我未实现的那个点给实现,球球了!!

数组一:id有重复的,长度是不确定的

var arr1 = [
    {id:22},
    {id:20},
    {id:21},
    {id:20},
    {id:23}
    ...
]

数组二:

var arr2 = [
    {projectId:20,name:'ubas'},
    {projectId:21,name:'tatb'},
    {projectId:22,name:'pro'},
    {projectId:23,name:'pro-list'}
]

需求:要把数组一的每个 id 对应的name ,直接替换数组一的id值。从数组二中找。向下面这样

var arr1 = [
    {id:'pro'},     id:22 变成 id:'pro'
    {id:'ubas'},     id:20 变成 id:'ubas'
    {id:'tatb'},     id:21 变成 id:'tatb'
    {id:'ubas'},     id:20 变成 id:'ubas'
    {id:'pro-list'}  id:23 变成 id:'pro-list'
    ...
]

各位大佬,拜托了!

阅读 2.8k
1 个回答

arr1.map(v=>({id: arr2.find(a=>a.projectId == v.id)?.name || v.id}))

快点的办法可以优化一下find逻辑,改成遍历做hash
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题