javascript - 在 JavaScript reduce 中定义参数

标签 javascript parameters reduce

我正在查看 JavaScript 中的这个 reduce 函数。 . .

var colors = ['red', 'red', 'green', 'blue', 'green'];

var distinctColors = colors.reduce(
    (distinct, color) =>
        (distinct.indexOf(color) != -1) ?
            distinct : 
            [...distinct, color],
    []
)

我知道回调函数对 colors 数组中的每个项目调用一次,在 distinct 中搜索 color 字符串并简单地如果找到则返回数组,如果找不到则将color添加到distinct

我不明白的是函数参数 (distict, color) 是如何定义为空数组和每种颜色的。

JavaScript 是否会自动假设 distinct 是数组,因为我调用了 distinct.indexOf(color)??

最佳答案

The reduce() method applies a function against an accumulator and each element in the array (from left to right) to reduce it to a single value. from MDN.

所以它只是一个累加器,或“当前状态”值。例如,让我们找到一个数组的最大值:

let values=[4,5,6,77,8,12,0,9];

let max=values.reduce((acc,curr) => {
  console.log(`comparing ${acc} and ${curr}`); 
  return Math.max(acc,curr)
  },0);

console.log(max);

这段代码只是存储(累加)每一步找到的最大值,然后返回它。

关于javascript - 在 JavaScript reduce 中定义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922864/

相关文章:

javascript - 使用HTML标签和innerHTML、setAttribute()等传递数据。编辑和更新存储在数据库中的新闻文章

javascript - 提取 URL 的最后一个字符串

javascript - Strapi 上传的文件未显示在网站上

javascript - Javascript 仅适用于 Web 浏览器吗?

MySQL SP : ERROR 1241 (21000)

C# params 关键字和函数重载

javascript - 使用 jQuery(AJAX) 获取外部 HTML 文件的列表元素的 ID

swift - 如何减少 if-condition 循环 - Swift

javascript - 为什么Reduce 在完成对传入的整个数组的循环之前就关闭了?

javascript - 对象索引逐渐增长的数组数组