javascript - 使用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 是数组中的其余值
解决方案
为此,您需要了解 reduce 函数的工作原理。它需要 2 个参数:一个函数和一个累加器的初始值。
(x, y) => x.includes(y) ? x : [...x, y]
这是一个函数,在 reduce 调用中被调用。对于 x 传递累加器,对于 y 是数组的当前值。所以这个函数接受累加器和当前值,检查值是否已经在累加器中(通过使用包含)。如果是函数返回 x,即累加器,但如果 y 不在 x 中,则函数返回一个包含旧累加器的所有元素和新值 x 的累加器的新数组。
到目前为止,这不是从数组中删除重复项的最佳方法,因为您搜索整个数组的每个循环。如果您需要一个没有重复的数组,请考虑使用Sets。
推荐阅读
- c# - 将 CHAR_INFO.Attributes 转换为 ConsoleColor
- c++ - 在 QChart 上画一个点
- javascript - Filepond无法在本地保存文件
- python-3.x - 我需要 python 3 中的 typeError 帮助,我是编码/python 新手,所以我有点困惑
- java - p:fileDownload 的问题(异常)
- javascript - 导入和导出意外令牌导出已安装 babel
- unit-testing - 如何在 ARTOS 中根据平台配置测试框架?
- json - 用未知键操作对象的 jq 程序
- python - 计算一个值在字典中出现的次数?(Python 3)
- hibernate - Hibernate 看不到插入的 sql 脚本数据