首页 > 解决方案 > 使用reduce解释重复数组中的值

问题描述

谁能告诉我关于使用reduce和spread

var arr = [10,10, 8000, 8000, 2, 17]
var unique = arr.reduce((x, y) => x.includes(y) ?  x : [...x, y], []);

console.log(unique)

在那个范围内做什么x?还有spread syntax?和最后一个空数组[ ]

当我 console.log x 时,它只显示第一个值数组,而 x 是数组中的其余值

标签: javascriptarraysloopsfor-loopduplicates

解决方案


为此,您需要了解 reduce 函数的工作原理。它需要 2 个参数:一个函数和一个累加器的初始值。

(x, y) => x.includes(y) ?  x : [...x, y]

这是一个函数,在 reduce 调用中被调用。对于 x 传递累加器,对于 y 是数组的当前值。所以这个函数接受累加器和当前值,检查值是否已经在累加器中(通过使用包含)。如果是函数返回 x,即累加器,但如果 y 不在 x 中,则函数返回一个包含旧累加器的所有元素和新值 x 的累加器的新数组。

到目前为止,这不是从数组中删除重复项的最佳方法,因为您搜索整个数组的每个循环。如果您需要一个没有重复的数组,请考虑使用Sets


推荐阅读