Javascript arrow功能而不是...

Javascript arrow功能而不是...

问题描述:

如何使用箭头函数缩短语法...?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; 
      } 
     } 

最后一块可以写成单行吗?我试过,但它看起来真的错了:

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

我在.NET中寻找类似.FirstOrDefault

使用Array#find

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

为了得到一个相当于firstOrDefault,你可以短路结果

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

这是确定的,但我忘了告诉大家,我用的打字稿(因为Angular2的),所以我得到的当我使用||时,在第二个答案中出错{}“类型{}不能分配给类型Product ...” – Dalibor

+0

...但我设法用||来解决它。新产品() – Dalibor

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);