let num = 6;
if (num < 13 && num > 1) {
let base = 1;
let remaining = num - 1;
let result = {
l: num,
r: remaining
};
while (remaining <= 12 && remaining >= 1) {
let o = {
l: num,
r: remaining
}
result["r"] = o;
console.log(result, o);
remaining--
}
console.log(result)
//return result;
} else {
throw new Error('Invalid number');
}
我想循环6次,在result中,result的r键必须在object中有object。number应该大于12或小于1,并希望将o推入r 6次。我尝试过像object.key或object[key]这样的对象访问,但现在很困惑
输出我想要喜欢
{l:num,r:{l:num,r{...so on 6 times}}}
1条答案
按热度按时间px9o7tmv1#
您的
result
对象总是会覆盖相同的r
属性。相反,您可能希望有一个对象引用,指向分配给r
属性的新对象,以便在下一次迭代中,该嵌套对象的r
属性被展开,而不是顶层的r
属性。需要作出两项修改-见评论:
请注意,对象文字中的
r: remaining
创建了一个属性,该属性在下一次迭代中被语句r.r = o
覆盖,因此只有最后创建的对象才能为remaining
分配有用的值(始终为1)。这项工作可以通过一种更优雅的方式来完成,即从内到外创建对象,每次都将一个新对象 Package 在先前创建的对象周围。
reduce
是一个方便的方法:这也可以通过显式循环来完成: