Вам нужна другая переменная found
и установите ее на true
, если набор данных найден.Затем не помещайте фактический набор данных в массив.
В основном вам необходимо посетить все элементы и в конце решить, добавите ли вы объект в массив.
С вашим кодом вывыполните хотя бы одно действие, либо обновите фактический конец набора данных, который работает только в том случае, если требуемый name
находится в первом элементе, либо вставьте объект в массив.Это происходит до тех пор, пока не будет найден требуемый набор данных или больше нет доступных элементов.
const arr = [{ name: 'first', amount: 2 }, { name: 'second', amount: 1 }, { name: 'third', amount: 1 }];
const obj = { name: 'second', amount: 3 };
var found = false;
for (let i = 0; i < arr.length; i++) {
if (arr[i].name === obj.name) {
arr[i].amount += obj.amount;
found = true;
break;
}
}
if (!found) {
arr.push(obj);
}
console.log(arr);
.as-console-wrapper { max-height: 100% !important; top: 0; }