以下是我的一些代码:
// "iterable" is a Map
iterable.forEach((definition, schemaKey) => {
let keyToGet = schemaKey.split('.');
});
keyToGet
包含我想要按排序顺序获取的嵌套键列表。也就是说,如果我有一个用户对象,
{
profile: {
name: { full: "Cat Man" }
}
}
我想使用profile.name.full
访问['profile', 'name', full]
。是否可以使用此值列表获取值?
答案 0 :(得分:1)
如果找到键,你可以做一个沿着对象向下移动的递归函数,如果它到达数组的末尾,最后返回值。如果找不到密钥,则返回-1:
function getFromArr(obj, arr){
function travelDown(current,index){
if(current.hasOwnProperty(arr[index])){
if(index+1 == arr.length){
return current[arr[index]]
}else{
return travelDown(current[arr[index]], index+1)
}
}else{
return -1;
}
}
return travelDown(obj, 0)
}
var obj ={
profile: {
name: { full: "Cat Man" }
}
}
console.log(getFromArr(obj,["profile", "name", "full"])) // Cat Man
console.log(getFromArr(obj,["profile", "name"])) // {full: "Cat Man"}
console.log(getFromArr(obj,["profile", "name", "nonexistant"])) // -1