2017-09-16 16 views
0

矢印関数を使用して構文をどのように短縮できますか?Javascript arrow関数の代わりに...

  this.id = 1;     
      let products: Product[] = [ 
       { 
        "id": 1, 
        "name": "Bycicle" 
       }, 
       { 
        "id": 2, 
        "name": "iPhoneX" 
       } 
      ]; 


     for (let p of products) { 
      if (p.id == this.id) { 
       this.product = p; 
       break; 
      } 
     } 

最後のブロックを1ライナーで書くことはできますか?私はこれを試してみましたが、それはそう間違って見えます:firstOrDefaultに相当するものを取得するには

this.product = products.filter(p => p.id == this.id)[0]; 

私は.NETで.FirstOrDefaultのようなものを探しています

答えて

2

使用Array#find

this.product = products.find(p => p.id === this.id) 

、あなたは可能性結果を短絡する

this.product = products.find(p => p.id === this.id) || {} 
+0

を行う必要がありますそれはOKですが、私は私が(理由Angular2の)活字体を使用することを伝えるのを忘れたので、私は取得しますあなたが2番目の答えでエラーが発生しました。 {} "タイプ{}はタイプProductに割り当てられません..." – Dalibor

+0

...しかし、私はそれを||新製品() – Dalibor

2

find

this.product = products.find(p => p.id === this.id); 

DEMO

let id =1; 
 
var products = [ 
 
       { 
 
        "id": 1, 
 
        "name": "Bycicle" 
 
       }, 
 
       { 
 
        "id": 2, 
 
        "name": "iPhoneX" 
 
       } 
 
      ]; 
 
      
 
let product = products.find(p => p.id === id); 
 
console.log(product);

関連する問題