我有以下对象:
let a = {
aa: {
aaa: 1
},
ab: {
aba: {
abaa: 2
}
}
}
我想编写一个函数,您可以向该函数传递一个对象以及表示该对象中嵌套属性的任意数量的字符串,并让该函数输出相应的值。例如:
func(a, 'aa', 'aaa') // 1
func(a, 'ab', 'aba', 'abaa') // 2
如果参数数量固定,我就可以做到这一点,如下所示:
function func() {
console.log(arguments[0][arguments[1]][arguments[2]])
}
有谁知道如何编写 func()
以便它接受任意数量的参数?
最佳答案
将reduce
与参数
结合使用:
let a = {
aa: {
aaa: 1
},
ab: {
aba: {
abaa: 2
}
}
}
function func() {
console.log([...arguments].reduce((a, c) => a[c]));
}
func(a, 'aa', 'aaa');
func(a, 'ab', 'aba', 'abaa');
如果您不喜欢使用参数
,请使用休息和传播...
:
let a = {
aa: {
aaa: 1
},
ab: {
aba: {
abaa: 2
}
}
}
function func(...args) {
console.log(args.reduce((a, c) => a[c]));
}
func(a, 'aa', 'aaa');
func(a, 'ab', 'aba', 'abaa');
关于javascript - 记录嵌套对象属性的 JS 函数,其中属性作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572656/