【问题标题】:javascript push multidimensional arrayjavascript推送多维数组
【发布时间】:2011-12-14 09:08:39
【问题描述】:

我有类似的东西:

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

    cookie_value_add.push(valueToPush);

结果是 [];

我做错了什么?

【问题讨论】:

  • 你在哪里看到“结果是[]”?
  • 如果你想创建一个数组,请使用 [] 文字表示法而不是 new Array。此外,如果您想存储通用键值对,请使用普通对象而不是数组:var toPush = {}; toPush.productId = ...
  • 结果是在我的 cookie 中,我将值存储到其中,存储的值越多,出现的 [] 就越多...

标签: javascript arrays push


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

【讨论】:

  • 数组也是对象。因此,在原始代码中,属性就在那里,而不仅仅是[]
  • @Y。 Shoham,是的,数组是对象。只是[] 属性对他们有特殊的意义。您只能使用基于 0 的整数,这是 OP 问题的根源。
【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 2018-07-17
      相关资源
      最近更新 更多