我正在学习Angular 6,并且对诸如这样的构造感到困惑:
this.contentArray.map((v: string, i: number) => `Content line ${i + 1}`)
或类似:
return this.aService.getItems()
.pipe(map(response => response.data));
我像《 The_Complete_Book_on_Angular_6》或《 Pro Angular 6》(亚当·弗里曼)(Adam Freeman)一样读这几本书,但那里没有简单的解释。 Google也对此保持沉默。 有人能给出正确和良好的教程吗?或者(对于业余爱好者)可能是关于 array.map,array.filter 和 .pipe(map(...))的书?
答案 0 :(得分:4)
第一个是Array.prototype.map,而第二个是rxjs
map运算符。
在第一种情况下,您采用现有数组并将函数应用于其每个元素
map()方法使用调用a的结果创建一个新数组 在调用数组中的每个元素上提供了功能。
[1, 2, 3, 4].map(x => x + 2) // [3, 4, 5, 6]
第二种情况在可观察性领域本质上是相同的。
将给定的项目函数应用于源发出的每个值 可观察的,并将结果值作为可观察的发出。
答案 1 :(得分:2)
在您的第一句话中, Map是JavaScript数组函数,它遍历数组的每个项目,以将对象数组映射到另一个对象数组。
let array = [1,2,3,4,5] ;
let result = array.map(val => val +10); //11,12,13,14,15
在第二条语句中,映射来自rxjs库。这会将一个或多个对象映射到另一个对象,但是生成的对象将是可观察到的。
const source = from([1, 2, 3, 4, 5]); //add 10 to each value const example = source.pipe(map(val => val + 10)); //output: 11,12,13,14,15