js数组对象的循环处理返回数组集合?

作者站长头像
站长
· 阅读数 9
let Arr1 = [
  "one",
  "two",
  "three"
]

let Arr2 = {
  one: [{name:"1"}],
  two: [{name:"2"}],
  three:[{name:"3"}],
  four:[{name:"4"}],
  five:[{name:"5"}]
}
Arr1数组的数据不固定,然后根据Arr1数组的数据去取Arr2里面的数据,
需要得到返回的数据格式如下:
let res = {
   one: [{name:"1"}],
   two: [{name:"2"}],
   three:[{name:"3"}]
}
res 对象的键值(key)需要对应Arr1 数组里面的 one two three

大佬们帮我看看我自己写的这个有点问题:

let res= arr1.filter(k => {
  return Object.fromEntries({k: arr2[k]})
})
这个res的键值(key)写成K 了,没有拿到Arr1 里面的 one two three
回复
1个回答
avatar
test
2024-07-05

你可以用 Array.reduce() 方法来处理:

let Arr1 = [
  "one",
  "two",
  "three"
]

let Arr2 = {
  one: [{name:"1"}],
  two: [{name:"2"}],
  three:[{name:"3"}],
  four:[{name:"4"}],
  five:[{name:"5"}]
}

let res = Arr1.reduce((accumulator, key) => {
  if (Arr2.hasOwnProperty(key)) {
    accumulator[key] = Arr2[key];
  }
  return accumulator;
}, {});

console.log(res);
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容