javascript - 使用循环访问 typeScript 中的嵌套对象
问题描述
我有一个 json 文件,其中包含 json 对象,如下所示。
{
"RegionNames" : ["Region1", "Region2"],
"StageNames" : ["Stage1", "Stage2"],
"stages" : {
"Stage1" : {
"Region1" : {
"var1": "value1",
"var2": "value2"
},
"Region2" : {
"var1": "value1",
"var2": "value2"
}
},
"Stage2" : {
"Region2" : {
"var1": "value1";,
"var2": "value2";
}
}
}
}
我想在每个阶段访问 Region1 和 Region2 的 var1 和 var2 这个变量。
//我如何尝试在另一个 typeScript 文件中访问它们,上面的内容在 jsonContent.json 中:-
const stages =jsonContent.StageNames;
const regions = jsonContent.RegionNames;
for (let stageIndex in stages) {
for (let regionIndex in regions) {
console.log("Variable1 value :"+ jsonContent.stages[stageIndex].regions[regionIndex].var1)
console.log("Variable2 value :"+
jsonContent.stages[stageIndex].regions[regionIndex].var2)
}
}
有人可以帮助我使用循环在 json 中进行访问。
我需要使用“RegionNames”和“StageNames”变量来运行该循环,但不能这样做。有人可以帮忙吗。
解决方案
您可以Object.entries()
在任何对象上使用方法并将其转换为数组,然后使用循环来访问道具及其值......此外,我不得不使用forEach
循环,因为您的对象并不理想(意思是说它包含类似 item1 而不是 item 的东西) ..
let jsonContent = {
"RegionNames": ["Region1",
"Region2"],
"StageNames": ["Stage1",
"Stage2"],
"stages": {
"Stage1": {
"Region1": {
"var1": "value1",
"var2": "value2"
}
},
"Stage2": {
"Region2": {
"var1": "value1",
"var2": "value2"
}
}
}
};
const array = [];
Object.entries(jsonContent.stages).forEach(entry=> array.push(entry[1]));
array.forEach((item, index)=>{
index++;
const region = 'Region'+ index;
const object = item[region];
// console.log(object)
console.log("Variable1 value :"+ object.var1);
console.log("Variable2 value :"+ object.var2);
});
注意:你不应该在像 item1 这样的对象中使用索引,因为在相同数据结构的对象中,建议以简单的方式存储数据,而不是使用带有...的索引。
推荐阅读
- android - 如何在应用安装期间修复未知来源错误?
- sql - DB2 SQL 语句仅在 BEGIN END 块内运行超慢
- c# - 单台 PC 上的 SQL Server CE 持久性问题
- php - 在mysql中调整外键
- typescript - 如果引用类型是具有泛型的父类,为什么不能将派生类的引用分配给变量?
- android - 设置android核心-运行时系统aosp日志调试变量
- wordpress - 如何将帖子内容的第一张图片设置为超过 1000 条记录的缩略图?
- angular - NgRx 效果加载两次
- .net - 如何根据 linq 中的返回结果返回额外的“空白”行?
- angular - Angular6如何测试一系列http请求