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

标签 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"
}]

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

我尝试过的:

arrNames.map(x => {
if(arrNames.name == arrInfo.name){
   result=arrInfo.info
}

^ 这显然行不通——但我想知道 Assign 或 Filter 是否合适。

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

最佳答案

您可以使用 find()里面map()找到元素。这会找到元素,即使它们在两个数组中不在同一索引处也是如此。

然后使用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);

关于javascript - 映射两个对象数组,匹配属性并将特定信息存储在新数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58347456/

相关文章:

javascript - 类型错误 : Cannot read propety of undefined. Apollo Server 和 Sequelize 的 GraphQL 突变

python - 如何将 int 值存储在 numpy.empty 数组中?

c++ - 编译器显示错误消息 "makes pointer from integer without cast"(反转数组)。我该如何解决这个问题?

ios - 获取从数组中随机选择的对象类型?

javascript - 按对象属性对 javascript 对象数组进行排序

javascript - 输入按钮单击事件未在 HTML 中触发

javascript - 如何使用简单的 html 解析器或其他东西获取值

javascript - 获取传递的字段名称

c - 在c中如何检查字符数组是否是> = 1的有效整数?

java - 在日期对象中添加 5.30 小时