Javascript将方法链接在一起

Javascript将方法链接在一起,javascript,Javascript,假设我有一个包含多部电影的数组,这些电影对象包含诸如标题/评级等内容 如果我这样做: let filteredMapList = arr.filter(function(obj){ return obj.Rating > 8.0; }).map(function(obj){ return {title: obj.Title,rating: obj.Rating}; }); 这应该可以工作,并且只返回8.0以上的电影,并且只返回新对象中的标题和分级 所以我的困惑是…到底哪一个是第一

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

如果我这样做:

let filteredMapList = arr.filter(function(obj){
  return obj.Rating > 8.0;
}).map(function(obj){
  return {title: obj.Title,rating: obj.Rating};
});
这应该可以工作,并且只返回8.0以上的电影,并且只返回新对象中的标题和分级

所以我的困惑是…到底哪一个是第一个?是先运行map然后再运行filter,还是先运行filter然后再运行map(这看起来很奇怪……尽管它是这样布置的)


当将方法链接在一起时,您如何准确地……遵循链接。方法之间传递的
obj
是否也需要相同?如果没有……那么我真的很困惑它到底是如何工作的。

过滤器
首先运行,
映射
其次运行
map
接收作为参数的内容=返回的
filter

filter
首先运行,
map
第二次运行
map
接收作为参数的内容=返回的
filter

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

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

let b = a.map(function(obj){
  return {title: obj.Title,rating: obj.Rating};
});
首先执行
过滤器
并转到
a
,然后在
a
上调用
map
,并转到
b
,显示结果


链接函数也是一样,只是跳过了为每个步骤创建变量的步骤。

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

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

let b = a.map(function(obj){
  return {title: obj.Title,rating: obj.Rating};
});
首先执行
过滤器
并转到
a
,然后在
a
上调用
map
,并转到
b
,显示结果


链接函数也是一样,只是跳过了为每个步骤创建变量的步骤。

它们按顺序运行,就像其他任何操作一样<代码>映射在过滤后的数组上调用。我不确定我是否理解这种困惑。第一次调用返回一个对象,随后的函数将调用以前函数返回的任何函数。将函数链接在一起时,每个函数都调用以前函数的返回值。它们按顺序运行,就像其他任何函数一样<代码>映射在过滤后的数组上调用。我不确定我是否理解这种困惑。第一次调用返回一个对象,随后的函数将调用以前的函数返回的任何对象。将函数链接在一起时,每个函数都调用以前函数的返回值。它接收的参数每次都是每个元素,不是已筛选的整个数组,对吗?第二个函数接收前一个函数返回的整个结果。在您的示例中,
filter
返回已过滤数组,
map
接收整个已过滤数组,并调用回调函数,该数组的每个元素都作为回调的参数。它接收的参数每次都是每个元素,不是已筛选的整个数组,对吗?第二个函数接收前一个函数返回的整个结果。在您的示例中,
filter
返回过滤数组,
map
接收整个过滤数组并调用回调函数,该数组的每个元素都作为回调的参数。啊,这是一个完美的示例!我想也许每个元素都经过过滤器然后映射,但它先做所有的过滤器,然后把剩下的传递给映射。伟大的啊,这是一个完美的例子!我想也许每个元素都经过过滤器然后映射,但它先做所有的过滤器,然后把剩下的传递给映射。伟大的