计数并循环遍历数组的 JSON 个对象

Count and loop through JSON object of arrays

当我想遍历 JSON 个对象数组时遇到问题。

问题如:

我的代码:

var codes = require('./nl.json');
for (var i = 0, l = Object.keys(codes).length; i <= l; i++) {
    console.log(l) ;
    var areaCodeTest = codes.netherlands[i].areaCode;
    var areaNameTest = codes.netherlands[i].areaName;

    it("Search for postal code ", function(){
        var postCode = element(by.id("imysearchstring"));
        postCode.click(); 
        browser.sleep(1000); 
        console.log(areaCodeTest);
        postCode.clear().sendKeys(areaCodeTest);
        browser.sleep(1000);
        console.log("Typed " + areaCodeTest);
    });
}

我的Json(简短示例):

{
"netherlands": [
  {
    "areaCode": 9401,
    "areaName": "Assen"
  },
  {
    "areaCode": 9402,
    "areaName": "Assen"
  },
  {
    "areaCode": 9403,
    "areaName": "Assen"
  }
 ]
}

我看过以下答案:

Size of ObjectLength of Json

我试过了:

(var i = 0, l = Object.keys(codes).length; i <= l; i++)

(var i = 0, l = Object.keys(codes.netherlands[0]).length; i <= l; i++)

for (var i = 0, l = codes.netherlands.length; i <= l; i++) // uses last areaCode in json file and only loop with that number. It does not start from top.

图片: some of my outputs

预期: 我想要的是计算 JSON 中的项目数量(不是 key/values)

遍历所有数据并将它们分配给var areaCodeTest = codes.netherlands[i].areaCode;var areaNameTest = codes.netherlands[i].areaName;

您需要访问循环中的实际密钥才能访问 codes[key]

for() 循环的简化版本,其中包含对象键的存储变量或使用 for in 循环

const keys = Object.keys(codes)

for (let i = 0; i < keys.length; i++) {
  // current object key and value of that property in main object
  const key = keys[i], arr = codes[key];
  console.log(`key = ${key}, length= ${arr.length}`)

  // do another loop here for `arr` if needed
}

// OR using `for in`
for (let key in codes) {
  console.log(`key = ${key}, length= ${codes[key].length}`)
}
<script>
  const codes = {
    "netherlands": [{
        "areaCode": 9401,
        "areaName": "Assen"
      },
      {
        "areaCode": 9402,
        "areaName": "Assen"
      },
      {
        "areaCode": 9403,
        "areaName": "Assen"
      }
    ]
  }
</script>

试试这个我给你一个例子

const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};

var length = (Object.keys(object1).length);

请参考这个Link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

我使用以下方法让它工作:

var codes = require('./nl.json');

codes.forEach((item) => {
    var areaCodeTest = item.areaCode;
    var areaNameTest = item.areaName;

    it("and search for postal code ", function(){
        var postCode = element(by.id("imysearchstring"));
        postCode.click(); 
        console.log(areaCodeTest);
        postCode.clear().sendKeys(areaCodeTest);
        browser.sleep(1000);
        console.log("Typed " + areaCodeTest);
    });
}

我不是 100% 了解 foreach 附近 => 的含义,但我目前正在研究我的代码为何有效。如果您知道请post评论,以便其他开发人员也学习。

这让我想起了表情包"not sure why code does not work / Not sure why code works"