需要Javascript语法帮助返回对象数组

时间:2014-09-20 18:42:21

标签: javascript jquery arrays

我正在尝试返回以下对象数组:

{
    "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);           

});

2 个答案:

答案 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>