JavaScript推multidimensional array

我有这样的事情:

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

结果是[];

我做错了什么?

在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对象(它们是关联数组)之间的真正根本和关键的区别。

使用[]

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

要么

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

在JavaScript中,您尝试使用的键/值存储的types是对象字面值,而不是数组。 您错误地创build了一个复合数组对象,该对象正好具有基于您提供的键名称的其他属性,但数组部分不包含元素。

相反,声明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);