我正在尝试返回以下对象数组:
{
"2013-04-30": {"number": 5, "url": "www.yahoo.com"},
"2013-05-04": {"number": 18, "url": "www.google.com"}
}
我无法正确理解语法我尝试了以下几种方法但没有成功。我的代码:
var returnEvents = [];
$.each(events, function (index, item) {
//returnEvents.push(item.Date, { 'number': item.Number, 'url': item.URL });
//returnEvents.push({ id: item.Date, value: { 'number': item.Number, 'url': item.URL } });
//var temp = {};
//temp[item.Date] = { 'number': item.Number, 'url': item.URL };
//returnEvents.push(temp);
});
答案 0 :(得分:0)
这是对象,而不是数组。所以你不应该使用push
。试试下面的内容:
var returnEvents = {};
$.each(events, function (index, item) {
returnEvents[item.Date] = { 'number': item.Number, 'url': item.URL };
});
如果您需要以数组形式返回,您的预期回报数据应定义为:
[
{"2013-04-30": {"number": 5, "url": "www.yahoo.com"}},
{"2013-05-04": {"number": 18, "url": "www.google.com"}}
]
然后您可以按如下方式构建此数据:
var returnEvents = [];
$.each(events, function (index, item) {
returnEvents.push({item.Date :{ 'number': item.Number, 'url': item.URL }});
});
答案 1 :(得分:0)
您的最终结果是一个对象,而不是一个数组。您需要使用[]
语法为其分配以动态指定属性名称。
var events = [
{ Date: "2013-04-30",
Number: 5,
URL: "www.yahoo.com"
},
{ Date: "2013-05-04",
Number: 18,
URL: "www.google.com"
}
];
var returnEvents = {};
$.each(events, function (index, item) {
returnEvents[item.Date] = { 'number': item.Number, 'url': item.URL };
});
console.log(returnEvents);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>