【问题标题】:Iterate through Array in JSON遍历 JSON 中的数组
【发布时间】:2017-03-17 09:50:26
【问题描述】:

我正在通过 JSON 生成图表。我想在其中包含我的 Array 的每个元素。如您所见,我目前正在对数组元素进行硬编码(relation[0],relation[1])。我想遍历整个数组。但是,我显然不能在 JSON 中放置 for 循环。如果我尝试仅包含数组本身(关系),我的图表将不会生成,因为整个数组都用 [ ] 括号包裹。 所以不是添加关系[0],关系[1],......我希望根据数组大小自动添加。

this.graph.fromJSON({
  "cells": [{
      "type": "qad.Question",
      "size": {"width": 201.8984375, "height": 125},
      "optionHeight": 30,
      "questionHeight": 45,
      "paddingBottom": 20,
      "minWidth": 150,
      "inPorts": [{"id": "in", "label": "In"}],
      "outPorts": [],
      "position": {"x": 300, "y": 38},
      "angle": 0,
      "question": objectName2,
      "options": objectCol2,
      "id": "1849d917-8a43-4d51-9e99-291799c144db",
      "z": 2
    }, relation[0],relation[1]
  ]
});

【问题讨论】:

  • 如何创建一个包含必要配置值的数组,然后将关系连接到其中。 var params = [{...}]; ..."cells": params.concat(relation),..
  • @Rajesh 感谢您的想法。我试试看。
  • @Rajesh 现在的问题是当我想将该数组添加到此方法 this.graph.fromJSON(JSON.stringify(params)) 时。输出再次用 [ ] 包装,因此它不能被解析为有效的 JSON。 [“细胞”:....]
  • [cells: ...] 无效。应该是{ cells: [...]}

标签: javascript json typescript


【解决方案1】:
for (var i = 0; i < json.length; i++) {
  var obj = json[i];

  console.log(obj.id);
}

【讨论】:

  • 请补充说明
  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
【解决方案2】:

取自:How do I iterate over a JSON structure?

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

【讨论】:

    【解决方案3】:
    var relation= [relation[0],relation[1]];
    var obj = {
      "cells": [{
          "type": "qad.Question",
          "size": {"width": 201.8984375, "height": 125},
          "optionHeight": 30,
          "questionHeight": 45,
          "paddingBottom": 20,
          "minWidth": 150,
          "inPorts": [{"id": "in", "label": "In"}],
          "outPorts": [],
          "position": {"x": 300, "y": 38},
          "angle": 0,
          "question": objectName2,
          "options": objectCol2,
          "id": "1849d917-8a43-4d51-9e99-291799c144db",
          "z": 2
        }
      ]
    };
    this.graph.fromJSON(obj.cells.concat(relation));
    

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 2019-09-15
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多