例如,如果我们有一个现有的对象
const mainObject = {
title: 'some title',
topics: {
topic1: {
path: '',
id: 1
},
topic2: {
path: '',
id: 2
}
}
}
我有一个函数来获取包含键的数组
例如
const arrayOfKeys = ['topics', 'topic1'];
function getObjectByKeys(arrayOfKeys) {
// problem is length of the array may change
const myObject = mainObject[arrayOfKeys[0]][arrayOfKeys[1]];
return myObject;
}
函数应该返回
{
path: '',
id: 1
}
最佳答案
您可以在此处使用.reduce
。用主对象初始化累加器,并在其回调的每次迭代中返回与当前键对应的值。
const mainObject = {
title: 'some title',
topics: {
topic1: {
path: '',
id: 1
},
topic2: {
path: '',
id: 2
}
}
}
const arrayOfKeys = ['topics', 'topic1'];
function getObjectByKeys(arrayOfKeys) {
return arrayOfKeys.reduce((a, el, i, arr) => {
return a[el] || {};
}, mainObject);
}
console.log(getObjectByKeys(arrayOfKeys));