我有一个不知道其结构的嵌套对象。例如:
const nestedObject = {
"one": {
"two": {
"three": 3
}
}
}
我想显示three
的值。
我有一个这样的数组,所以我知道如何导航对象以便到达three
:
const keys = ["one", "two", "three"]
这不必采用这种结构。
那么鉴于上面的one.two.three
数组,我该如何访问keys
?或其他一些数据结构。我当时正在考虑进行递归,但是它似乎太复杂了,我觉得这里有一个简单的解决方案。
答案 0 :(得分:6)
您可以使用简单的Array.prototype.reduce()
函数来做到这一点:
const data = {
"one": {
"two": {
"three": 3
}
}
};
const keys = ["one", "two", "three"];
const value = keys.reduce((a, v) => a[v], data);
console.log(value);
答案 1 :(得分:0)
您可以使用MyObject["fieldName"]
访问子对象。然后,您可以使用递归函数,该函数将使用包含索引的数组在对象中漫游
let MyObj = {
"one": {
"two": {
"three": 3
}
}
};
let Keys = ["one", "two", "three"];
function getValue(obj, arrIndexes, index = 0)
{
let currentIndex = arrIndexes[index];
let currentObject = obj[currentIndex];
if (index < arrIndexes.length - 1)
{
return getValue(currentObject, arrIndexes, index + 1)
}
else
{
return currentObject;
}
}
console.log(getValue(MyObj, Keys));