2016-10-09 13 views
2

との間にスペースを変数に代入するためにどのように私は、配列を持っていると言うと、私はそれがどのくらいかわからない:配列内のすべてを取得し、文字列

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

と私

配列[0]最初に、[OK]を[検索することができます:私は、以下の機能がトリガされたとき、それはだと思いますのようなので、それはそう、関数は、配列を行かせる方法オブジェクト

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

を持っています最初にオブジェクトobjに入れます。 arryr [1]は2番目に、okは最初に2番目を見つけるなど)、finalの値を見つけます。しかし、実際のオブジェクトはより複雑であるため、obj [arr [0]] [arr [1]] [arr [2]]などのようなものは教えてください。

function search(arr){ 
    //wat here 
} 

答えて

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)

+0

機能からのparam RとEを取得していますか? obj内でどのようにそれらを見つけるのですか? – eclipseIzHere

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; 
} 
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']));

関連する問題