我正在尝试将值添加到数组中但由于某种原因它无法正常工作。我是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中的所有东西都是对象)创建二维数组的好例子。
我非常感谢任何帮助或提示。
答案 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] });
});