2016-09-14 22 views
0

何かangular$parseサービスのようなものです。未定義のキーを持つObjectの値を取得するにはどうすればよいですか?

このようなオブジェクトがある場合:

const obj = { 
    items: [ 
     { 
      store: { 
       type: '' 
      } 
     } 
    ] 
} 

時計は:キーitemsstoreと可能typeundefined、または全くないが存在しています。

私が最初itemの型を取得したいが、ここに私のコードは次のとおりです。

const firstItem = obj.items[0] || {}; 
const store = firstItem.store || {}; 
const type = store.type || 'computer'; 

私はこれを行うには良い方法があると思います。私はの$parseサービスがそれを行うのは簡単だと知っています。 angular$parseサービスや他のアイデアのような方法がありますか?ありがとう!

+0

[Lodashの '_.get'](https://lodash.com/docs/4.15.0#get)〜' _.get(OBJ、「アイテム[0] .store.typeような何かを'、' computer ') ' – Phil

+0

私は' javascript'を使用したいと思っています – novaline

+0

あなたはLodashがただのJavaScriptだと知っていますよね?いずれにしても、あなたは常にいくつかのインスピレーションのために '_.get'のソースを見ることができます – Phil

答えて

2

なぜtry catchを使用しないか。

var type; 
try { 
    type = obj.items[0].store.type; 
} 
catch { 
    type = 'computer'; 
} 
+0

はい。できます。副作用はありますか? – novaline

+0

これはまっすぐな解決策です。 – Kindzoku

+0

@novaline、それがあなたを助けたら、これを答えとしてマークして、他の人がそれを使うかもしれません。 – Kindzoku

-1
if(!angular.isUndefined(obj)) 
{ 
    if(angular.isArray(obj.items)){ 
     // Do something 
    } 
} 

あなたは必要ですか?

+0

いいえ、彼は 'type'を明らかにチェックする必要があります。 – Kindzoku

+0

ああ、申し訳ありません。私の悪い – Zuko

関連する問題