ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数组去重,利用 ES6 的 reduce() 方法 和 include 判断 实现

2020-05-08 17:08:42  阅读:485  来源: 互联网

标签:ES6 currentValue previousValue 迭代 reduce includes 数组 include


预备知识:
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);

标签:ES6,currentValue,previousValue,迭代,reduce,includes,数组,include
来源: https://www.cnblogs.com/xiaolantian/p/12851563.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有