如何获取数组中的所有内容并将其分配给变量,其间的空格为字符串

时间:2016-10-09 07:28:23

标签: javascript arrays

所以说我有一个阵列而且我不知道它有多长:

var arr=["first","second","final"];

我有一个对象

var obj={
    first:{
        second:{
            final:"asdf"
        }
    }
}

如何使它成为当触发下面的函数时,函数通过数组就像它会想的那样:

array [0]是第一个,然后让我们先在对象obj中找到。 arryr [1]是第二个,ok让我们先找到第二个等等,然后找到final的值。但请记住,实际的对象要复杂得多,所以你不能告诉我obj [arr [0]] [arr [1]] [arr [2]]或类似的东西。

function search(arr){
    //wat here
}

3 个答案:

答案 0 :(得分:1)

您可以像这样使用reduce()



var arr = ["first", "second", "final"];
var obj = {
  first: {
    second: {
      final: "asdf"
    }
  }
}

var result = arr.reduce(function(r, e) {
  return r[e]
}, obj)

console.log(result)




答案 1 :(得分:0)

您需要一个递归函数。这将从数组

中的嵌套对象获取所有值
function flattenObject(theObject){
    var flattenedArray = [];
    function walkTheObject(theObject){
        for (var key in theObject){
             if (theObject.hasOwnProperty(key)){
                 var theElement = theObject[key];
                  if (typeof theElement === "object"){  
                      walkTheObject(theElement);
                  }else{
                     flattenedArray.push(theElement);
                  } 
             }
        }          
    }
    walkTheObject(theObject);
    return flattenedArray;
}

答案 2 :(得分:0)

对于未给定的属性,您可以将reduce与默认值一起使用。



function getValue(object, array) {
    return array.reduce(function (o, k) {
       return (o || {})[k];
    }, object);
}

var array = ["first", "second", "final"],
    object = { first: { second: { final: "asdf" } } };

console.log(getValue(object, array));
console.log(getValue(object, ['a', 'b']));