【问题标题】:How to get Arrays out of multiple JSON objects?如何从多个 JSON 对象中获取数组?
【发布时间】:2017-06-16 00:40:20
【问题描述】:

我想把这个 JSON 文件转成数组:

{"元素":[{"LowerTolerance":1.4,"Name":"abc","ReferenceValue":1.5,"UpperTolerance":1.6,"Valid":false,"Value":1.8},{ "LowerTolerance":20,"Name":"def","ReferenceValue":21.5,"UpperTolerance":23,"Valid":true,"Value":22.8},{"LowerTolerance":4.5,"Name": "ghi","ReferenceValue":5,"UpperTolerance":5.5,"Valid":false,"Value":4}],"Kamera":"c1"}

下面是有序树形的 JSON 文件图片:JSON file

我想获得像 lowertolerance[]、name[]、referencevalue[] 等数组,所以当我调用数组的一个元素时,我会得到它的值。例如: 名称[2] = ghi 或参考值[0] = 1.5

我发现了这个:https://stackoverflow.com/questions/6857468/converting-a-js-object-to-an-array#=

现在我遇到的问题是,当您像我一样在对象内部有一个对象时,我不知道该怎么办。

我试过这个:

var o = {"Elements": [{"LowerTolerance": 1.4, "Name": "abc", "ReferenceValue": 1.5, "UpperTolerance": 1.6}, {"LowerTolerance": 1.4, "Name": "abc", "ReferenceValue": 1.5, "UpperTolerance": 1.6}, {"LowerTolerance": 1.4, "Name": "abc", "ReferenceValue": 1.5, "UpperTolerance": 1.6}], "Kamera": "c1"};

var arr = $.map(o, function(el) { return el; })

document.getElementById("output").innerHTML = arr;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output">
</div>

(需要jQuery)

输出为:“[object Object],[object Object],[object Object],c1”。 我该怎么做才能让主对象中的对象?

如果你能帮助我,你会让我很开心!


这是我的问题的一个更简单的例子:

	var myObj = [{1:1, 2:2, 3:3}, {4:4, 5:5, 6:6}];

	var array = $.map(myObj, function(value, index) {
		return [value];
	});
	document.getElementById("output").innerHTML = array;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="output"></p>

【问题讨论】:

    标签: javascript jquery html arrays json


    【解决方案1】:

    您的 JSON 对象:

    myJson = {"Elements":[{"LowerTolerance":1.4,"Name":"abc","ReferenceValue":1.5,"UpperTolerance":1.6,"Valid":false,"Value":1.8},{"LowerTolerance":20,"Name":"def","ReferenceValue":21.5,"UpperTolerance":23,"Valid":true,"Value":22.8},{"LowerTolerance":4.5,"Name":"ghi","ReferenceValue":5,"UpperTolerance":5.5,"Valid":false,"Value":4}],"Kamera":"c1"}
    

    创建每个数组,例如:

    var lowerToleranceArray = [];
    

    现在,遍历您的 JSON 并将每个值推送到数组:

    for (var i=0; i<myJson.Elements.length; i++) {
    lowerToleranceArray.push(myJson.Elements[i].LowerTolerance);
    }
    

    现在,您有了 lowerTolerance 数组。其他数组也一样(推入同一个循环)。

    【讨论】:

      【解决方案2】:

      使用 ES6 for...of 循环 :

      var jsonObj = {
      	"Elements": [{
      		"LowerTolerance": 1.4,
      		"Name": "abc",
      		"ReferenceValue": 1.5,
      		"UpperTolerance": 1.6,
      		"Valid": false,
      		"Value": 1.8
      	}, {
      		"LowerTolerance": 20,
      		"Name": "def",
      		"ReferenceValue": 21.5,
      		"UpperTolerance": 23,
      		"Valid": true,
      		"Value": 22.8
      	}, {
      		"LowerTolerance": 4.5,
      		"Name": "ghi",
      		"ReferenceValue": 5,
      		"UpperTolerance": 5.5,
      		"Valid": false,
      		"Value": 4
      	}],
      	"Kamera": "c1"
      };
      
      let lowertolerance = [];
      let name = [];
      let referencevalue = [];
      let uppertolerance = [];
      let valid = [];
      let value = [];
      
      for (let item of jsonObj.Elements) {
        lowertolerance.push(item.LowerTolerance);
        name.push(item.Name);
        referencevalue.push(item.ReferenceValue);
        uppertolerance.push(item.UpperTolerance);
        valid.push(item.Valid);
        value.push(item.Value);
      }
      
      console.log("lowertolerance :", lowertolerance);
      console.log("name :", name);
      console.log("referencevalue :", referencevalue);
      console.log("uppertolerance :", uppertolerance);
      console.log("valid :", valid);
      console.log("value :", value);

      【讨论】:

        猜你喜欢
        • 2020-05-05
        • 1970-01-01
        • 2021-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-25
        • 2016-02-22
        相关资源
        最近更新 更多