Javascript 通过数组的JSON对象进行计数和循环

Javascript 通过数组的JSON对象进行计数和循环,javascript,json,protractor,Javascript,Json,Protractor,当我想在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].area

当我想在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);
    });
}
{
"netherlands": [
  {
    "areaCode": 9401,
    "areaName": "Assen"
  },
  {
    "areaCode": 9402,
    "areaName": "Assen"
  },
  {
    "areaCode": 9403,
    "areaName": "Assen"
  }
 ]
}
(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.
  • 它只计算了两个键(我假设是因为它们是Object.keys),我有两个键
  • 只有一个值的循环
我的代码:

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);
    });
}
{
"netherlands": [
  {
    "areaCode": 9401,
    "areaName": "Assen"
  },
  {
    "areaCode": 9402,
    "areaName": "Assen"
  },
  {
    "areaCode": 9403,
    "areaName": "Assen"
  }
 ]
}
(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.
我看过的答案如下:

我试过:

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);
    });
}
{
"netherlands": [
  {
    "areaCode": 9401,
    "areaName": "Assen"
  },
  {
    "areaCode": 9402,
    "areaName": "Assen"
  },
  {
    "areaCode": 9403,
    "areaName": "Assen"
  }
 ]
}
(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.

(var i=0,l=Object.keys(code).length;i您需要访问循环中的实际键才能访问
code[key]

简化版的
for()
循环,为对象键存储变量,或使用
for in
循环

const keys=Object.keys(代码)
for(设i=0;i

常量代码={
“荷兰”:[{
“区域代码”:9401,
“区域名称”:“Assen”
},
{
“区域代码”:9402,
“区域名称”:“Assen”
},
{
“区号”:9403,
“区域名称”:“Assen”
}
]
}

试试这个我给你一个例子

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

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

请参阅此链接:

我使用以下方法使其工作:

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附近的
=>
意思的人,但我目前正在研究我的代码为什么能工作。如果你知道,请发表评论,以便其他开发人员也能了解


这让我想到了“不确定为什么代码不起作用/不确定为什么代码起作用”

你只想知道数组的长度吗?如果是的话,你的case@ShakedDahan然后它只使用一个区号(8245)循环-JSON文件中的最后一条记录。我希望它从顶部开始,遍历每个对象,并使用areaName和areaCode为什么不使用更舒适的循环?object.keys(codes).forEach(函数(项){console.log(项);//key console.log(代码[areaCode];//value});