【发布时间】:2017-09-01 10:19:04
【问题描述】:
我有一个函数可以遍历对象中的每个名称。这个对象有一个数组参数 materials 保存其他对象。这些对象具有相同的数组参数,可以容纳更多的对象,依此类推。
我的代码行 3-5 只是在添加 .material 和另一个变量时重复。此外,代码只会进入对象名称的四层以下,否则我必须不断重复更多代码。
我怎样才能减少这种混乱?
var itemList = function(x) {
console.log(x.materials[0].name);
for (var i = 1; i < x.materials.length; i++) {
console.log(x.materials[i].name);
if (x.materials[i].build !== "BasicFactory" && i !== 0) {
for (var j = 1; j < x.materials[i].materials.length; j++) {
console.log(x.materials[i].materials[j].name);
if (x.materials[i].materials[j].build !== "BasicFactory" && j !== 0) {
for (var k = 1; k < x.materials[i].materials[j].materials.length; k++) {
console.log(x.materials[i].materials[j].materials[k].name);
if (x.materials[i].materials[j].materials[k].build !== "BasicFactory" && j !== 0) {
for (var l = 1; l < x.materials[i].materials[j].materials[k].materials.length; l++) {
console.log(x.materials[i].materials[j].materials[k].materials[l].name);
}
}
}
}
}
}
}
};
【问题讨论】:
-
请改用Code Review 询问。
-
underscore.js 或 loadsh.js 非常适合这种情况。
-
您想使用函数式函数,例如
map或foreach。
标签: javascript arrays optimization recursion refactoring