javascript推多维数组
我有这样的想法:javascript推多维数组,javascript,arrays,push,Javascript,Arrays,Push,我有这样的想法: var valueToPush = new Array(); valueToPush["productID"] = productID; valueToPush["itemColorTitle"] = itemColorTitle; valueToPush["itemColorPath"] = itemColorPath; cookie_value_add.push(valueToPush); 结果是[] 我做错了什么?数组在Java
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 = { };
valueToPush.productID = productID;
valueToPush.itemColorTitle = itemColorTitle;
valueToPush.itemColorPath = itemColorPath;
cookie_value_add.push(valueToPush);
每个JavaScript开发人员都必须理解JavaScript数组和JavaScript对象(关联数组)之间的一个非常基本和关键的区别。在JavaScript中,您试图使用的键/值存储类型是对象文本,而不是数组。您错误地创建了复合数组对象,该对象碰巧具有基于您提供的键名称的其他属性,但数组部分不包含任何元素 相反,将
valueToPush
声明为对象,并将其推送到cookie\u value\u 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);
使用
[]
:
cookie_value_add.push([productID,itemColorTitle, itemColorPath]);
或
您在何处看到“结果为[]”?如果要创建数组,请使用[]文字符号,而不是新数组。此外,如果要存储常规键值对,请使用普通对象而不是数组:
var-toPush={};toPush.productId=…
结果是在我的cookie中,我将值存储到其中,存储的值越多,出现的[]就越多……数组也是对象。因此,在原始代码中,属性就在那里,而不仅仅是[]
@Y.Shoham,是的,数组是对象。只是[]
属性对他们有特殊的意义。您只能使用基于0的整数,这是OPs问题的根源。
cookie_value_add.push([productID,itemColorTitle, itemColorPath]);
arrayToPush.push([value1, value2, ..., valueN]);