2016-11-21 8 views
1

プロパティの1つがnullまたは未定義である場合、実際にネストされた値を取得するための良い方法を探してきました。ネストされた値を取得するための略語

例オブジェクト:

var a = { 
    b: { 
     c: { 
      d: 10 
     } 
    } 
} 

さて、これはそれがフル装備であるが、時にはbが未定義またはcあるいはdとしたときに、オブジェクトが持っている構造であるとします。

var d = a.getIn(['b', 'c', 'd'], null) 

これは私が値を取得することができます:私は(私は道よりクリーン見つけた)次の操作を行うことができますImmutable.jsで

var d = a && a.b && a.b.c && a.b.c.d // Now d has value d or some falsy value 

:JavaScriptでは、私はおそらくこのような何かに頼るだろう途中で何かが失敗した場合は、最後のパラメータをデフォルト値に設定します。

jsで同様のことをすることはできますか?

+1

だから、それをしない方法を作る....()を減らし、私が使用するものです。 – epascarello

+1

いいえ、そのための組み込みの短縮形はありません。そのため、Immutable.jsの背後にいる人々がその機能を書いたのです。 –

答えて

4

値と型を確認した後で、オブジェクトの配列を減らすことができます。

function getIn(object, keys, def) { 
 
    return keys.reduce(function (o, k) { 
 
     return o && typeof o === 'object' && k in o ? o[k] : def; 
 
    }, object); 
 
} 
 

 
var a = { b: { c: { d: 10 } } }; 
 

 
console.log(getIn(a, ['b', 'c', 'd'], null)); 
 
console.log(getIn(a, ['b', 'c', 'd', 'e'], null));

+0

あなたはアンダースコアを作成したようです.js。 – Mahi

+0

私はそれがそれ以上のものだと思った。 –

+0

新しいjsを作成しようとします。 'nina.js' – Mahi

関連する問題