我是初学者,所以如果这是微不足道的,请原谅我的无知。
我有一个未知长度的 javascript 对象,每个属性的值都是一个数组(对我来说也是未知长度)。例如:
var obj = {"varA":[1,2,3],
"varB":['good','bad'],
"varC":[0,100],
"varD":['low','med','high']
}
我想遍历每个属性并为每个属性值组合创建一个新对象。如果我知道我可以强制使用 for 循环的属性数量,但是有没有办法在不知道要硬编码多少循环的情况下进行枚举?
我基本上想做这种事情:
var oblist = [];
for (a in varA){
for (b in varB){
for (c in varC){
for (d in varD){
oblist.push({"varA":varA[a], "varB":varB[b], "varC":varC[c], "varD":varD[d]});
}
}
}
}
这样 oblist 将包含以下对象:
{"varA":1, "varB":"good", "varC":0, "varD":"low"}
{"varA":1, "varB":"good", "varC":0, "varD":"med"}
...
{"varA":3, "varB":"bad", "varC":100, "varD":"high"}
谢谢!
编辑:看我不是在寻求 for 循环或索引语法帮助。我在问如果我不知道对象中的属性数量该怎么办(例如 varA、varB、varC、varD、varE,我知道我可以拥有 varZZ),所以我不能只是很难-code 4 for 循环。有没有办法使用 obj[Object.keys(obj)[i]].length 设置它?