如何在javascript中将数据添加到二维数组中

时间:2014-01-30 12:47:27

标签: javascript jquery arrays multidimensional-array

我正在尝试将值添加到数组中但由于某种原因它无法正常工作。我是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中的所有东西都是对象)创建二维数组的好例子。

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

4 个答案:

答案 0 :(得分:5)

错误消息的原因是:

'title' = value.title

这意味着您正在尝试为文字字符串分配值。其余代码(除了另一个代码之外)实际上是有效的语法,即使这不是你想要做的,所以这就是你在代码的那一部分得到错误信息的原因。

要拥有键值对的集合,您将使用对象而不是数组,并且您可以像这样创建它:

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

答案 1 :(得分:2)

可能是最简单的,

var eventsArray = new Array();

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

答案 2 :(得分:1)

您应该使用对象:

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

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

的原因

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

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

答案 3 :(得分:1)

如果您将代码更改为:

,则有效
var eventsArray = new Array();

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