Нужно сделать добавление обьектов в массив
Всем доброго времени суток! :help:
Помогите пожалуйста решить проблему... Думаю она легко решаема, но никак не могу понять как. Вопрос, как мне сделать так, чтобы когда при проверке срабатывает else к уже существуещему обьекту в localstorage, добавлялся новый обьект. На данный момент, он его просто перезаписывает. Вот код : var id = "1"; // id товара var name = "item 2"; // переменная имени var x = 1; var summ = 500; if (getCartData()[id]) { // если товар с таким id уже есть в корзине то : var x = (getCartData()[id][3]) += 1; // узнаем количество товара и добавляем + 1 var summ = 500; var summa = summ * x; // умножаем количество на сумму. var foo = { [id] : [id , name, summa , x]}; //формируем массив localStorage.setItem('foo', JSON.stringify(foo));//записываем в localstorage alert (" обновляем товар"); } else { foo = {}; var foo = { [id] : [id , name, summ , x]}; //формируем массив*/ localStorage.setItem('foo', JSON.stringify(foo));//записываем в localstorage alert ("добавляем новый товар"); } На выходе, при смене значения id сейчас так : {"1":["1","item 2",2500,5]} а нужно чтобы было так : {"2":["2","item1",100 , 1],"6":["6","item6",5000 , 1]} Javascript начал познавать несколько дней назад, поэтому прошу не судить строго и отнестись с пониманием...:p Надеюсь правильно описал проблему. |
Romann,
var id = "1"; // id товара var name = "item 2"; // переменная имени var x = 1; var price = 500; function Cart(id, name, price, x) { var foo = localStorage.getItem("foo"); foo = foo ? JSON.parse(foo) : {}; foo.sum = function(id) { return id in this ? this[id][2] * this[id][3] : 0 }; Object.defineProperty(foo, "sum", { enumerable: false }); Object.defineProperty(foo, "total", { enumerable: false, get: function() { return Object.keys(this).reduce(function(s, a) { return s + foo.sum(a) }, 0) } }); if (id != void 0) { var item = foo[id]; var text = "обновляем товар"; if (!(id in foo)) { foo[id] = [id, name, price, 0]; text = "добавляем новый товар" } foo[id][3] += x; localStorage.setItem("foo", JSON.stringify(foo)); alert(text) } return foo }; var foo = Cart(id,name,price,x); console.log(foo.sum(1),foo.total) |
Часовой пояс GMT +3, время: 05:57. |