Javascript链接方法在一起

时间:2017-04-25 20:00:55

标签: javascript

假设我有一个包含多部电影的数组,这些电影对象包含标题/评级/等等......

如果我这样做的话:

let filteredMapList = arr.filter(function(obj){
  return obj.Rating > 8.0;
}).map(function(obj){
  return {title: obj.Title,rating: obj.Rating};
});

这应该有效并且只返回高于8.0的电影,并且只返回新对象中的标题和评级。

所以我的困惑是......哪一个正好先跑?是地图先运行然后经过过滤器还是首先运行过滤器然后运行地图(这看起来很奇怪......即使这就是它的布局)。

当把方法链接在一起时,你怎么做......跟随链。在方法之间传递的obj也需要相同吗?如果不是......那么我真的很困惑它是如何运作的。

2 个答案:

答案 0 :(得分:4)

它们按照它们所处的顺序链接和运行。如果你像这样重写它会更明显:

let a = arr.filter(function(obj){
  return obj.Rating > 8.0;
});

let b = a.map(function(obj){
  return {title: obj.Title,rating: obj.Rating};
});

filter首先发生,然后转到a,然后在map上调用a,然后转到b并显示结果。

链接功能是相同的,您只是跳过为每个步骤创建变量的步骤。

答案 1 :(得分:1)

filter首先运行,map秒。 map作为参数收到= filter返回的内容。