【发布时间】:2020-04-19 01:45:00
【问题描述】:
我有一个如图所示的数组:
var arrOne = [{id: 3},{id: 8},{id: 12}];
还有一个数组如图:
var arrTwo = [
{id: 1, val: 'Adam'},
{id: 3, val: 'Bailey'},
{id: 8, val: 'Cathy'},
{id: 12, val: 'David'},
{id: 15, val: 'Earl'}
];
我想基于 arrOne 迭代 arrTwo,并从 arrTwo 中获取 val 值。 所以结果应该是:
var result = ['Bailey', 'cathy', 'David'];
尝试将 .map 与 .filter 连接:
arrOne.map(arOne => arrTwo.filter(artwo => {
if(arOne.id === artwo.id) {
return artwo.val
} else {
return false;
}
}));
但它给了我一切,它是假的,它在那里增加了假,这是我不想要的。 任何我出错的想法都将不胜感激。
根据norbitrial的回答进行编辑:
const arrOne = [{id: 3},{id: 8},{id: 12}];
const arrTwo = [
{id: 1, val: 'Adam'},
{id: 3, val: 'Bailey'},
{id: 8, val: 'Cathy'},
{id: 12, val: 'David'},
{id: 15, val: 'Earl'}
];
const result = arrOne.map(({id}) => arrTwo.find(e => {
const someCond = someConditionaEval();
if(someCond && e.id === id) {
return e;
} else {
return false;
}
}).val); //this breaks
【问题讨论】:
-
arrOne.map(o => arrTwo.find(t => t.id === o.id));
标签: javascript arrays filtering