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

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 是否合适。


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


catspeake
浏览 161回答 3
3回答

慕运维8079593

您可以在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);

慕婉清6462132

let result = [];arrNames = [   {name: "A"},   {name: "B"},   {name: "C"},]arrInfo = [   {name: "A", info: "AAA"},   {name: "B", info: "BBB"},   {name: "C", info: "ccc"},]result = arrNames.map(function(_, index){  if(arrNames[index].name === arrInfo[index].name) {    return arrInfo[index].info  }})

HUWWW

您可以使用带有条件的地图el.name === arrNames[index].name && el.info方法:if (el.name === arrNames[index].name) return el.infolet arrNames = [{  name: "A"}, {  name: "B"}, {  name: "C"}]let arrInfo = [{  name: "A",  info: "AAA"}, {  name: "B",  info: "BBB"}, {  name: "C",  info: "ccc"}]const res = arrInfo.map((el, index) => el.name === arrNames[index].name && el.info)console.log(res)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript