Это не совсем понятно мне, какой тип структуры данных, вы хотите, чтобы в конечном итоге после вы добавили в корзину несколько предметов. Таким образом, этот ответ является предположением, основанным на том, как он выглядит, как вы пытаетесь сделать в своем вопросе, но если вы показываете литерал Javascript для того, что вы хотите, чтобы фактическая структура выглядела после нескольких элементов в корзине, мы можете быть уверены, что сделаем лучшую рекомендацию.
Вы должны инициализировать объект или массив javascript, прежде чем сможете его использовать. Обычный способ сделать это - проверить, существует ли он, а если нет, то инициализируйте его перед назначением ему. И, поскольку вы держите count
, вы также захотите инициализировать счет.
var data = [];
function addproduct(id,name,price){
if (!data[id]) {
// initialize object and count
data[id] = {count: 0};
}
data[id]["name"] = name;
data[id]["price"] = price;
++data[id]["count"];
console.log(data);
}
И FYI, массивы используются для числовых индексов. Если вы используете имена свойств, такие как «имя» и «цена» для доступа к свойствам, вы должны использовать объект вместо массива.
И, я хотел бы предложить вам использовать точечный синтаксис для известных строк свойств:
var data = [];
function addproduct(id,name,price){
if (!data[id]) {
// initialize object and count
data[id] = {count: 0};
}
data[id].name = name;
data[id].price = price;
++data[id].count;
console.log(data);
}
это console.log, не console.print – Winchestro
Вы по крайней мере, для инициализации 'данных [ID] = {};' перед добавлением свойств к нему. Кроме того, 'data' действительно массив с последовательными числовыми индексами? Или вы должны использовать объект вместо массива. – jfriend00
@ jfriend00, который (далее) сломал поле счетчика ... – Alnitak