У меня есть массив, как показано:
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'}
];
Я хочу перебрать arrTwo на основе arrOne и получить значения val из arrTwo. Таким образом, результат должен быть:
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