Вопрос:

Значение массива обновления Javascript, если существует, иначе выдвиньте новый массив к объекту

javascript jquery multidimensional-array array-push

16 просмотра

1 ответ

473 Репутация автора

Я пытаюсь обновить значение в массиве, если оно найдено, а если нет, то добавить новый массив к нему.

Вот некоторый код, который я пробовал:

var cartItems = {};
var items = []
cartItems.items = items;
$('.proAdd').click(function(){
var name = $(this).attr("data-name");
var price = parseFloat($(this).attr("data-price"));
var quantity = parseInt($(this).attr("data-quantity"));

var item = {"name": name,"price": price,"quantity": quantity}

items.forEach(function(item) {
if (item.name === name) {
item.quantity = 2
return; 
}else{
cartItems.items.push(item);
}
});

В этой версии заметка толкается. Если я удалю ветку else, то она обновляет ее, но также выдвигает ее. Я создал скрипку для этого .

Также попробовал это, но он говорит, что x.quantity не определен:

var index = items.findIndex(x => x.name==name)
if (index != -1){
x.quantity = 2
}
else {
cartItems.items.push(item);
}
Автор: Abu Nooh Источник Размещён: 25.04.2019 09:42

Ответы (1)


0 плюса

18789 Репутация автора

Потому что indexхранит индекс элемента и xявляется временным значением, которое недоступно после этой строки. Используйте findвместо этого и убедитесь, что вы смотрите на то же самое itemsкаждый раз:

var item = cartItems.find(x => x.name == name);
if (item) {
  item.quantity = 2;
} else {
  cartItems.items.push(item);
}
Автор: Jack Bashford Размещён: 25.04.2019 09:45
Вопросы из категории :
32x32