预备知识:
reduce: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
concat: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
includes: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
注意: 必须熟悉上面三个数组原型上的方法才能看懂下面的。
// 1. 要去重的数组
const targets = [1, 1, 2, 3, 4, 3, 3];
// 2.采用 reduce + includes 来实现
const norepeat = targets.reduce((prevIoUsValue, currentValue, index, array) => {
// 判断之前返回的值 是否 不包含当前值,如果 不包含 就满足条件,注意这里有 !运算符
if (!prevIoUsValue.includes(currentValue)) {
// 如果 prevIoUsValue(之前迭代返回的值) 中不 includes(包含) 那就将当前值 concat(合并) 进数组
// 并返回 作为 下一次迭代的 prevIoUsValue 值
return prevIoUsValue.concat(currentValue);
}
// 如果上面判断发现 currentValue 存在 上一次迭代返回的 prevIoUsValue 中
// ,那就证明当前 currentValue 的值是重复的,那就不会被合并进下一次迭代的 prevIoUsValue 中,不做任何修改直接返回 去下一次迭代。
return prevIoUsValue;
}, []);
// 注意: reduce 的第二个参数 reduce(()=> {},[]) 是指 prevIoUsValue 第一次迭代的值,必须提供一个空数组,
// 不然默认会以 targets 数组中的第一个数组元素当作第一次迭代的 prevIoUsValue 值。
// 打印结果输出验证
console.log(norepeat);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。