通过键列表获取嵌套键以按顺序获取

时间:2015-11-02 18:13:32

标签: javascript

以下是我的一些代码:

// "iterable" is a Map
iterable.forEach((definition, schemaKey) => {
  let keyToGet = schemaKey.split('.');
});

keyToGet包含我想要按排序顺序获取的嵌套键列表。也就是说,如果我有一个用户对象,

{
  profile: {
    name: { full: "Cat Man" }
  }
}

我想使用profile.name.full访问['profile', 'name', full]。是否可以使用此值列表获取值?

1 个答案:

答案 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