Подтвердить что ты не робот

Многомерный массив javascript push

У меня есть что-то вроде этого:

    var valueToPush = new Array();
    valueToPush["productID"] = productID;
    valueToPush["itemColorTitle"] = itemColorTitle;
    valueToPush["itemColorPath"] = itemColorPath;

    cookie_value_add.push(valueToPush);

результат: [];

что я делаю неправильно?

4b9b3361

Ответ 1

Массивы должны иметь нулевые целые индексы в JavaScript. Итак:

var valueToPush = new Array();
valueToPush[0] = productID;
valueToPush[1] = itemColorTitle;
valueToPush[2] = itemColorPath;
cookie_value_add.push(valueToPush);

Или, может быть, вы хотите использовать объекты (которые являются ассоциативными массивами):

var valueToPush = { }; // or "var valueToPush = new Object();" which is the same
valueToPush["productID"] = productID;
valueToPush["itemColorTitle"] = itemColorTitle;
valueToPush["itemColorPath"] = itemColorPath;
cookie_value_add.push(valueToPush);

что эквивалентно:

var valueToPush = { };
valueToPush.productID = productID;
valueToPush.itemColorTitle = itemColorTitle;
valueToPush.itemColorPath = itemColorPath;
cookie_value_add.push(valueToPush);

Это действительно фундаментальное и решающее различие между массивами JavaScript и объектами JavaScript (которые являются ассоциативными массивами), которые должен понимать каждый разработчик JavaScript.

Ответ 2

Используйте []:

cookie_value_add.push([productID,itemColorTitle, itemColorPath]);

или

arrayToPush.push([value1, value2, ..., valueN]);

Ответ 3

В JavaScript тип хранилища ключей/значений, который вы пытаетесь использовать, является литералом объекта, а не массивом. Вы ошибочно создаете составной объект массива, который, как оказалось, имеет другие свойства на основе указанных вами имен ключей, но часть массива не содержит элементов.

Вместо этого объявите valueToPush в качестве объекта и нажмите на cookie_value_add:

// Create valueToPush as an object {} rather than an array []
var valueToPush = {};

// Add the properties to your object
// Note, you could also use the valueToPush["productID"] syntax you had
// above, but this is a more object-like syntax
valueToPush.productID = productID;
valueToPush.itemColorTitle = itemColorTitle;
valueToPush.itemColorPath = itemColorPath;

cookie_value_add.push(valueToPush);

// View the structure of cookie_value_add
console.dir(cookie_value_add);