首页 > 解决方案 > javascript - 使用 for (key in json) - 我想获取所有其他关键注释 json 仅包含对象

问题描述

我想使用for (key in json)但只使用其他所有键。使用数组会很简单,但我收到的 json 只包含对象。

我已经问了一个 smililair 问题,nicee 人们指出了一个错字以及为什么它不起作用。问题(我仍然有)是内容重复(即:我想要 id="1" 中的第一个对象和 id="2" 中的第 2cnd 对象,然后再次 id="1 中的第 3 个对象" 以及 id="2" 等中的第 4 个对象)

问题是我在 id="1" 和 id="2" 中获得了第一个对象,然后在 id="1" 和 id="2" 中再次获得了 2cnd 对象。

例如,假设我有这个 json 文件:

"123":{
   "name":"someName",
   "age":"12",
   "health":{
      "heart":"OK",
      "lungs":"Not so good"
    }
},
"223":{
   "name":"someName1",
   "age":"42",
   "health":{
      "heart":"Not so good",
      "lungs":"OK"
    }
}

我想将第一个患者的姓名和肺部放入 div id="1" 并将第二个患者的姓名和肺部放入 div id="2"。

What I would like:
id="1" ... SomeName, OK
id="1" ... SomeName1, Not so good

What I actually get is:
id="1" ... SomeName, OK, SomeName1, Not so good
id="2" ... SomeName, OK, SomeName1, Not so good

所以问题是我如何从函数中得到其他的。 keyfor (key in json)

这是我的代码。对不起,很长的文字,只是想把事情说清楚。如果您有任何其他问题,请告诉我。谢谢。

    var data1 = document.getElementById("data1");
    var data2 = document.getElementById("data2");
    loadJSON(function(json) {
      var l = Object.keys(json).length;
      console.log("json start");
      for (var i = 0; i <= l; i++){
        console.log(i);
        if (i % 2 === 0){
          for (x in json) {
            data1.innerHTML+="<img src=" + json[x].picture + "/>";
            data1.innerHTML+=json[x].price_wrapper.price + json[x].price_thingy.suf + " modulo 0 + " + i;
            console.log("0" + i);
          }
        } else {
          for (x in json) {
            data2.innerHTML+="<img src=" + json[x].picture + "/>";
            data2.innerHTML+=json[x].price_wrapper.price + json[x].price_thingy.suf + " modulo 1 + " + i;
            console.log("1" + i);
          }
        } 
      }
    });

标签: javascriptjsonfor-loopobject

解决方案


您再次遍历整个 json。如果我理解正确,您只需要带有键 l[i] 的 json 对象的值。

let json = 
  {
    "123":{
      "name":"someName",
      "age":"12",
      "health":{
        "heart":"OK",
        "lungs":"Not so good"
      }
    },
    "223": {
      "name":"someName1",
      "age":"42",
      "health":{
        "heart":"Not so good",
        "lungs":"OK"
      }
    }
  }

let l = Object.keys(json)
console.log(l.length)

for(let i = 0; i < l.length; i++){
  let element = json[l[i]];
  console.log(`id=${i}, ${element.name}, ${element.health.lungs}`);
}

这是我的例子:

https://jsbin.com/yavosiroxi/edit?js,console


推荐阅读