映射两个对象数组,匹配属性并将特定信息存储在新数组中

BWe*_*303 5 javascript arrays object prototypejs array.prototype.map

javascript 新手,正在努力学习!我试图通过两个对象数组进行映射,如果某个属性匹配,则将特定信息拉入数组中。

let result;

let arrNames = [{
  name: "A"
}, {
  name: "B"
}, {
  name: "C"
}]

let arrInfo = [{
  name: "A",
  info: "AAA"
}, {
  name: "B",
  info: "BBB"
}, {
  name: "C",
  info: "ccc"
}]

Run Code Online (Sandbox Code Playgroud)

如果 arrNames.name == arrInfo.name,我希望结果等于 arrInfo.info。

我试过的:

arrNames.map(x => {
if(arrNames.name == arrInfo.name){
   result=arrInfo.info
}
Run Code Online (Sandbox Code Playgroud)

^ 这显然不起作用——但我想知道 Assign 或 Filter 是否合适。

在此先感谢您的帮助(抱歉这可能是个骗局)!

Nik*_*hil 4

您可以使用map()内的find ()来查找元素。即使元素在两个数组中的索引不同,这也会找到该元素。

然后使用filter()过滤undefined不匹配时出现的任何值。

var arrNames = [
   {name: "A"},
   {name: "B"},
   {name: "C"}
];

var arrInfo = [
   {name: "A", info: "AAA"},
   {name: "B", info: "BBB"},
   {name: "C", info: "ccc"}
];

let result = arrNames.map(x => {
  item = arrInfo.find(item => item.name === x.name);
  if (item) { 
    return item.info;
  }      
}).filter(item => item !== undefined); // Can also use filter(item => item);

console.log(result);
Run Code Online (Sandbox Code Playgroud)