[英]Javascript Loop inside another loop make 2 lists
我有一些看起来像这样的数据:
{
"mains": [{
"id": "454",
"name": "main 1",
"subs": [{
"id": "32",
"name": "sub 1"
}, {
"id": "23",
"name": "sub 2"
}, {
"id": "54",
"name": "sub 3"
}],
"image": null
}, {
"id": "654",
"name": "main 2",
"subs": [{
"id": "87",
"name": "sub 1"
}, {
"id": "78",
"name": "sub 2"
}],
"image": null
}]
}
为此,我需要创建2个列表:
为了创建包含所有电源的第一个列表...我已经这样做了:
mainlist = [];
sublist = [];
for (var i = 0; i < data.mains.length; i++) {
var obj = data.mains[i];
var mnlst = obj.name;
mainlist.push(mnlst);
}
console.log(mainlist);
在此示例中,它将返回市电名称,从而产生2个名称(在本例中)。
现在我需要做的是获取每个主要对象的子名称
因此,子列表(在这种情况下将返回)
主1的“ sub 1,sub 2和sub 3”,主2的“ sub 1和sub 2”等...
我怎样才能做到这一点?
您实际上在问题标题中有一个正确的想法-嵌套循环,您需要像这样迭代每个“ main”中的内部subs
:
mainlist = [];
sublist = {};
for (var i = 0; i < data.mains.length; i++) {
var obj = data.mains[i];
var mnlst = obj.name;
mainlist.push(mnlst);
var tempArr = [];
for(var j = 0; j < obj.subs.length ; j++){
var subObj = obj.subs[j];
var sblst = subObj.name;
tempArr.push(sblst);
}
sublist[mnlst] = tempArr;
}
我已将sublist
更改为对象,然后将“子”放入临时数组中,然后再将它们作为键控数组(其中的键是主名称)插入sublist
,现在可以像sublist['main 2']
以接收所有相关的订阅
您可以对主name
为key的子列表使用其他数据结构。
var data = { "mains": [{ "id": "454", "name": "main 1", "subs": [{ "id": "32", "name": "sub 1" }, { "id": "23", "name": "sub 2" }, { "id": "54", "name": "sub 3" }], "image": null }, { "id": "654", "name": "main 2", "subs": [{ "id": "87", "name": "sub 1" }, { "id": "78", "name": "sub 2" }], "image": null }] }, mainlist = [], sublist = Object.create(null); data.mains.forEach(function (main) { mainlist.push(main.name); sublist[main.name] = main.subs.map(function (sub) { return sub.name; }); }) console.log(mainlist); console.log(sublist['main 1']); console.log(sublist);
.as-console-wrapper { max-height: 100% !important; top: 0; }
让我们修改您的代码。
mainlist = [];
sublist = [];
for (var i = 0; i < data.mains.length; i++) {
var obj = data.mains[i];
var mnlst = obj.name;
//--[Start Modification]--
var subArr = obj.subs;
for(var j = 0; j < subArr.length; j++)
{
var subName = subArr[i].name;
//Here you have subject name, do whatever you want to do with it.
}
//--[End Modification]--
mainlist.push(mnlst);
}
console.log(mainlist);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.