访问 JS 对象中的动态嵌套键
Access dynamic nested key in JS object
我有一个像 ['animals', 'cats', 'cute', 'fast', 'small', ...]
这样的数组,想访问像
这样的对象的嵌套键
let object = {
one: {
two: {
three: {
// and so on
}
}
}
}
通常我会写object['animals']['cats']['cute']['fast']['small']..
问题是键和级别数是动态的(所以我可以获得具有 2 个嵌套级别或 50 个嵌套级别的对象),所以我不知道如何完成
在此先感谢您的帮助
用.reduce
迭代键数组,其中累加器是当前嵌套对象:
let object = {
one: {
two: {
three: {
prop: 'val'
}
}
}
};
const props = ['one', 'two', 'three', 'prop'];
const nestedVal = props.reduce((a, prop) => a[prop], object);
console.log(nestedVal);
要在同一点赋值,首先弹出最后一个键,使用相同的reduce
技巧到达最后一个对象,并在最后一个键处赋值给属性用括号表示法:
let object = {
one: {
two: {
three: {
prop: 'val'
}
}
}
};
const props = ['one', 'two', 'three', 'prop'];
const lastKey = props.pop();
const nestedObj = props.reduce((a, prop) => a[prop], object);
nestedObj[lastKey] = 'newVal';
console.log(object);
我有一个像 ['animals', 'cats', 'cute', 'fast', 'small', ...]
这样的数组,想访问像
let object = {
one: {
two: {
three: {
// and so on
}
}
}
}
通常我会写object['animals']['cats']['cute']['fast']['small']..
问题是键和级别数是动态的(所以我可以获得具有 2 个嵌套级别或 50 个嵌套级别的对象),所以我不知道如何完成
在此先感谢您的帮助
用.reduce
迭代键数组,其中累加器是当前嵌套对象:
let object = {
one: {
two: {
three: {
prop: 'val'
}
}
}
};
const props = ['one', 'two', 'three', 'prop'];
const nestedVal = props.reduce((a, prop) => a[prop], object);
console.log(nestedVal);
要在同一点赋值,首先弹出最后一个键,使用相同的reduce
技巧到达最后一个对象,并在最后一个键处赋值给属性用括号表示法:
let object = {
one: {
two: {
three: {
prop: 'val'
}
}
}
};
const props = ['one', 'two', 'three', 'prop'];
const lastKey = props.pop();
const nestedObj = props.reduce((a, prop) => a[prop], object);
nestedObj[lastKey] = 'newVal';
console.log(object);