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

Need Javascript syntax help returning array of objects

本文关键字:对象 数组 返回 帮助 Javascript 语法 需要      更新时间:2023-09-26

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

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

您的最终结果是一个对象,而不是一个数组。您需要使用[]语法为其赋值,以便动态指定属性名称。

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>

这是对象,而不是数组。所以您不应该使用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 }});
});