如何迭代 JSON 结构?

IT技术 javascript json loops
2021-02-04 16:32:28

我有以下 JSON 结构:

[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }]

如何使用 JavaScript 迭代它?

6个回答

var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"}];
    
for (var i = 0; i < arr.length; i++){
  document.write("<br><br>array index: " + i);
  var obj = arr[i];
  for (var key in obj){
    var value = obj[key];
    document.write("<br> - " + key + ": " + value);
  }
}

注意:for-in 方法对于简单的对象很酷。与 DOM 对象一起使用不是很聪明。

@AlexanderSupertramp 它是使用数组文字表示法和对象文字表示法中的对象设置的。在 JavaScript 中,数组本质上也是对象。所以我仍然会提到 arr 是使用 JSON 设置的。
2021-03-19 16:32:28
不要忘记在你的for key in obj循环中检查obj.hasOwnProperty(key)——否则有一天你可能会发现其他键正在进入obj你不想要的状态,例如,如果有人扩展了原型......
2021-03-31 16:32:28
嗨,我能问一下我是否想用它来获取远程 json 数组,我该怎么做?请给我一些指导!
2021-03-31 16:32:28
@devios 那么使用 DOM 对象的智能解决方案是什么?
2021-04-01 16:32:28
@musicformellons 请参阅developer.mozilla.org/en/docs/Web/JavaScript/Reference/...了解现代方法(IE 不支持)。
2021-04-01 16:32:28

取自jQuery 文档

var arr = [ "one", "two", "three", "four", "five" ];
var obj = { one:1, two:2, three:3, four:4, five:5 };

jQuery.each(arr, function() {
  $("#" + this).text("My id is " + this + ".");
  return (this != "four"); // will stop running to skip "five"
});

jQuery.each(obj, function(i, val) {
  $("#" + i).append(document.createTextNode(" - " + val));
});
这是一个非常令人困惑的语法。你能解释一下吗?您还可以提供输出吗?
2021-03-10 16:32:28
答案应该在 JavaScript 中给出,而不是在 JQuery 中给出。
2021-03-30 16:32:28
类似地,lodash 提供_.forEach下划线兼容性的别名_.each)来完成相同的任务。
2021-04-01 16:32:28
OP 要求使用 jQuery 或 JavaScript,因此答案适合我的书中。
2021-04-02 16:32:28
@WayneHartman 我同意你的观点,但最初的问题确实是“jquery 或 javascript”。似乎错误在于问题上没有 jquery 标签。
2021-04-05 16:32:28

使用的...的

var mycars = [{name:'Susita'}, {name:'BMW'}];

for (var car of mycars) 
{
  document.write(car.name + "<br />");
}

结果:

Susita
BMW
这是一个常规数组,而不是 JSON。
2021-03-13 16:32:28
Susita 是一个文化因变量,对吧?:-)
2021-03-14 16:32:28
是的,顶级变量,例如 BMW ;-)
2021-03-23 16:32:28
@SachinPrasad 不,i是属性名称。
2021-04-03 16:32:28
适用于数组和 jsons。
2021-04-08 16:32:28

如果这不容易,请告诉我:

var jsonObject = {
  name: 'Amit Kumar',
  Age: '27'
};

for (var prop in jsonObject) {
  alert("Key:" + prop);
  alert("Value:" + jsonObject[prop]);
}
您的 jsonObject 不是真正的 JSON 对象。它是一个 javascript 对象。这就是为什么这有效。但是,如果有人有 JSON 对象,他可以将其转换为 JS 对象,然后使用您的方法。要将 JSON 对象转换为 JS 对象,请使用 jsObject = JSON.parse(jsonObject);
2021-03-11 16:32:28
如果您通过 jQuery.getJSON() 获取了数据,那么这很好用。
2021-03-13 16:32:28

如果这是您的dataArray

var dataArray = [{"id":28,"class":"Sweden"}, {"id":56,"class":"USA"}, {"id":89,"class":"England"}];

然后:

$(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() {  
         var ID = this.id;
         var CLASS = this.class;
});
使用 JQuery 的最佳答案。我使用 AJAX 对来自后端的数据进行编码,所以我没有使用“stringify”函数。代码清晰美观!
2021-04-05 16:32:28