计数并循环遍历数组的 JSON 个对象
Count and loop through JSON object of arrays
当我想遍历 JSON 个对象数组时遇到问题。
问题如:
- 它只算两个(我假设是因为它们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);
});
}
我的Json(简短示例):
{
"netherlands": [
{
"areaCode": 9401,
"areaName": "Assen"
},
{
"areaCode": 9402,
"areaName": "Assen"
},
{
"areaCode": 9403,
"areaName": "Assen"
}
]
}
我看过以下答案:
Size of Object 和
Length 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"
当我想遍历 JSON 个对象数组时遇到问题。
问题如:
- 它只算两个(我假设是因为它们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);
});
}
我的Json(简短示例):
{
"netherlands": [
{
"areaCode": 9401,
"areaName": "Assen"
},
{
"areaCode": 9402,
"areaName": "Assen"
},
{
"areaCode": 9403,
"areaName": "Assen"
}
]
}
我看过以下答案:
Size of Object 和 Length 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"