在对象数组上迭代
Iterate over array of objects
我有一个类似的JSON字符串
var json = '{ "Comments":
[
{ "Id" : 1,"Comment" : "Test comment","Name" : "Yogesh","Child" : 0},
{ "Id" : 2,"Comment" : "Test comment II","Name" : "Yogesh","Child" : 0}
]
}';
我正在尝试对这些对象进行迭代,例如:
var parsedJSON = $.parseJSON(json);
var html = "";
for (comment in parsedJSON.Comments) {
html += "Id: " + comment.Id;
html += "Comment: " + comment.Comment;
html += "Name: " + comment.Name;
html += "Child: " + comment.Child;
html += "<br/>";
}
但在这里,for循环中的comment
变成了0
和1
,我的意思不是一个对象,而是一个字符串,我如何在这个数组上迭代?
var json = '{ "Comments": [{ "Id" : 1,"Comment" : "Test comment","Name" : "Yogesh","Child" : 0},{ "Id" : 2,"Comment" : "Test comment II","Name" : "Yogesh","Child" : 0}] }';
var parsedJSON = $.parseJSON(json), // jsonData should json
html = "",
comments =parsedJSON.Comments; // keeping reference of parsedJSON and its an Array
// Here key will give 0, 1 etc ie. index of array
for (var key in comments) {
html += "Id: " + comments[key].Id;
html += "Comment: " + comments[key].Comment;
html += "Name: " + comments[key].Name;
html += "Child: " + comments[key].Child;
html += "<br/>";
}
演示
您似乎误解了for..in
循环的工作方式。CCD_ 5将迭代地成为该阵列的密钥。在任何情况下,都不应该在数组上使用for..in
,而应该只在对象上使用——即使这样也要小心。
var l = parsedJSON.Comments.length, i, comment;
for( i=0; i<l; i++) {
comment = parseJSON.Comments[i];
// do stuff with comment
}
你可以试试这个:
var JsonData = { "Comments":
[
{ "Id" : 1,"Comment" : "Test comment","Name" : "Yogesh","Child" : 0},
{ "Id" : 2,"Comment" : "Test comment II","Name" : "Yogesh","Child" : 0}
]
};
var html = "";
for (var i = 0; i < JsonData.Comments.length; i++) {
comment = JsonData.Comments[i];
html += "Id: " + comment.Id;
html += " Comment: " + comment.Comment;
html += " Name: " + comment.Name;
html += " Child: " + comment.Child;
html += "<br/>";
}
alert(html);
您可以使用$.each
:
var html = "";
$.each(parsedJSON.Comments, function(i, comment) {
html += "Id: " + comment.Id;
html += "Comment: " + comment.Comment;
html += "Name: " + comment.Name;
html += "Child: " + comment.Child;
html += "<br/>";
}
或者,您可以使用$.map
:
var html = $.map(parsedJSON.Comments, function(comment, i) {
return "Id: " + comment.Id +
"Comment: " + comment.Comment +
"Name: " + comment.Name +
"Child: " + comment.Child +
"<br/>";
}).join('');
Comments持有一个包含两个元素的数组。
{ "Comments" : [ { 1 }, { 2 }] ...
所以你可以用访问它
for (var i = 0, len = parsedJSON.Comments.length; i < len; i++) {
html += "Id: " + parsedJSON.Comments[i].Id;
html += "Comment: " + parsedJSON.Comments[i].Comment;
html += "Name: " + parsedJSON.Comments[i].Name;
html += "Child: " + parsedJSON.Comments[i].Child;
html += "<br/>";
}
相关文章:
- 如何在DataTables 2.1中迭代对象数组
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- 如何在Jquery中迭代JSON数组
- 为什么数组在对象内部迭代对象时存储重复值
- 迭代和修改Firebase数组会导致未定义
- 在对象上迭代以验证它是否's键存在于数组中
- 在JSON数组中进行迭代,并为其元素设置样式
- 我需要迭代一个JSON数组——不知道如何做到——已经搜索过了,但仍然可以'我一点也不知道
- JavaScript:如何在迭代过程中修改数组中的值
- 使用Ruby数组使用JS在视图中进行迭代和显示
- 使用javascript在数组中迭代和映射JSON
- 在数组中迭代时的JS循环位置
- 在可变长度d3的多维数组上迭代
- MVC:使用Web窗体视图引擎在javascript中迭代Viewbag数组
- 如何通过迭代对象数组来删除某些项目
- 如何在 JavaScript 中动态地编写可迭代的函数数组
- 使用节点在 JSON 数组中搜索项目(最好不迭代)
- 使用 promises/dedelay 异步迭代一组文件
- 不能让.offset()方法在迭代一组列表项时工作
- 迭代2个数组并找到匹配,但需要相同的索引