变量的多个成员

Multiple Members by variable

我明白了 object。它有多个parents。

    object;
    var i=4;

我想知道的是:

    object.parent.parent.parent.parent; //4x because i=4

我怎么说"i ==4, so i want the depth 4 of parents",比如:

    object + 4x .parent

您可以获取一个临时变量并存储实际的对象引用并作为 lokng 进行评估,因为父项的计数不为空 属性。

var object = { parent: { parent: { parent: { parent: 'target' } } } },
    temp = object,
    i = 4;

while (i--) temp = temp.parent;

console.log(temp);

如果您的对象中没有父项,您可以创建嵌套属性。

在这种情况下,您需要将最后一个 属性 移出循环以分配最终值。

var object = {},
    temp = object,
    i = 4;

while (--i) {
    temp.parent = {};
    temp = temp.parent;
}

temp.parent = 'target';

console.log(object);

我假设你的意思是你想要第 4 个 parent。 如果实体的 parent 位于 parent 键,您可以使用类似的东西:

let parent = object;
for (let parentCounter = 0; parentCounter < i; parentCounter++)
    parent = parent.parent;

这应该可以解决问题:

const obj = {};
const i = 4;

let prev = obj; // Keep track of where we currently are.
for(let j = 0; j < i; j++) {
  prev.parent = {};
  prev = prev.parent; // We have to go deeper.
}

console.log(obj);

i 确定您需要多少层嵌套父级,然后循环构建所需的输出。

可以 使 for 循环的内容成为一行,但出于可读性原因我建议不要这样做:

for(let j = 0; j < i; j++) {
  prev = prev.parent = {}; // We have to go deeper.
}