Если вы знаете, что оба массива отсортированы в соответствии с ключом внутреннего объекта name
, тогда другие ответы, которые сравнивают индексы, вероятно, являются лучшим методом. Однако, если вы знаете, что массивы могут быть несортированными, вот потенциальное решение.
Примечание: Если вы имеете дело с массивами разных размеров, вам придется фильтровать или перебрать оба массива.
let arr1 = [{name: 'Almendras', amount: 0}, {name: 'Nueces', amount: 0}, {name: 'Chocolate', amount: 0}];
let arr2 = [{name: 'Almendras', amount: 2}, {name: 'Chocolate', amount: 1}, {name: 'Nueces', amount: 0}];
let expectedOutput = [{name: 'Almendras', amount: 2}, {name: 'Nueces', amount: 0}, {name: 'Chocolate', amount: 1}];
let actualOutput = arr1.map((ele1) => {
let ele2 = arr2.find((e) => e.name === ele1.name);
if(ele2) {
if(ele2.amount >= ele1.amount) {
return ele2;
}
}
return ele1;
});
console.log("actual: ", actualOutput);
console.log("expected: ", expectedOutput);