【问题标题】:How to add data to a 2 dimensional array in javascript如何在javascript中将数据添加到二维数组
【发布时间】:2014-02-22 18:49:56
【问题描述】:

我正在尝试将值添加到数组中,但由于某种原因它无法正常工作。我是 JavaScript 新手。

这是我的代码:

eventsArray = new Array();

$.each(xmlJsonObj.feed.entry, function(index, value){
    eventsArray[index] = new Array('title' = value.title, 'date' = value.date[1]);
});

所以基本上我是从 json 对象中提取一些值,并希望将它们保存为数组中的键值对(多维,因为每个事件都有多个值)。

这个数组稍后会按日期排序。

我目前收到以下错误:

ReferenceError: Left side of assignment is not a reference.

我是 JavaScript 新手,并不太明白哪里出了问题。尝试查看一些示例,但仍然看不到在这样的循环中使用 JavaScript(或对象,因为 JS 中的所有内容都是对象)创建二维数组的好示例。

我会非常感谢任何帮助或提示。

【问题讨论】:

    标签: javascript jquery arrays multidimensional-array


    【解决方案1】:

    您应该为此使用对象:

    eventsArray[index] = {};
    eventsArray[index].title = value.title;
    eventsArray[index].date = value.date[1];
    

    您遇到的问题是您尝试将value.title 值分配给String。 JS 中的数组不能以这种方式工作。此外,Arrays 不支持 String 键,这就是您可能需要 Object 的原因。

    如果您的 date 属性是 TIMESTAMP 例如,您可以将其排序为:

    eventsArray.sort( function( a, b ) {
        return a.date - b.date;
    }); 
    

    【讨论】:

    • 但是我可以排序吗?以后能够根据日期值对其进行排序并根据日期按顺序显示它们对我来说非常重要。这对对象可能吗?我知道使用数组是可能的。
    • 谢谢!这太棒了!
    【解决方案2】:

    如果您将代码更改为:

    var eventsArray = new Array();
    
    $.each(xmlJsonObj.feed.entry, function(index, value){
        eventsArray.push({ title : value.title, date: value.date[1] });
    });
    

    【讨论】:

      【解决方案3】:

      可能是最简单的一个,

      var eventsArray = new Array();
      
      $.each(xmlJsonObj.feed.entry, function (index, value) {
          eventsArray[index] =  { 'title': value.title, 'date': value.date[1] };
      });
      

      【讨论】:

      • @Guffa 我假设 eventsArray 是在 .each 循环上方声明的数组
      【解决方案4】:

      错误信息的原因是这样的:

      'title' = value.title
      

      这意味着您正在尝试为文字字符串分配一个值。其余代码(除了与它类似的其他代码)实际上是有效的语法,即使这不是您要执行的操作,所以这就是您在该部分代码中收到错误消息的原因。

      要拥有一个键值对的集合,你可以使用一个对象而不是一个数组,你可以像这样创建它:

      eventsArray[index] = { title: value.title, date: value.date[1] };
      

      【讨论】:

      • 接受 aaaanswer!!! ;) 正在寻找第一个发现错误的任务,确实错过了第二个 new array(),谢谢。 ;)
      • 那我还需要声明数组吗?还是在JS中不手动声明就可以了?
      • @alwaysStuck:您仍然需要先创建数组对象,然后才能将任何内容放入其中。此外,虽然您不需要在 Javascript 中声明变量,但最好始终这样做。
      猜你喜欢
      • 1970-01-01
      • 2017-05-09
      • 2015-02-16
      • 2019-08-05
      • 1970-01-01
      • 2019-07-23
      • 2012-01-01
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多