再不用ES6就Out了--ES6解决两个典型问题

本文介绍了ES6中数组去重的新方法,利用Set数据结构和扩展运算符简化代码。同时探讨了不借助临时变量进行两个数交换的创新思路,包括传统方法与ES6解构赋值的对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

###数组去重
在ES5中,主要通过Object的hash特性,减少一次for循环

  let arr = [1,2,3,3,3,2,12,3,4,5,5,4];

  let removeDuplicate = arr => {
    let obj = {},
        result = [];
    arr.map((value,index) => {
      if (!obj[value]) {
        obj[value] = value;
      }
    });
    for (let i in obj) {
      if (obj.hasOwnProperty(i)) {
        result.push(obj[i]);
      }
    }
    return result;
  }
  console.log(removeDuplicate(arr)); //[1, 2, 3, 4, 5, 12]

但是在ES6中引入了Set数据结构,在巧妙的结合扩展运算符(…)

  let removeDuplicate = arr => {
    return [...(new Set([...arr]))];
  }
  console.log(removeDuplicate(arr)); //[1, 2, 3, 12, 4, 5]

###不借助临时变量,进行两个数的交换
对于交换两个数, 我们一般的思维是声明一个中间变量保存其中一个变量,达到交换的效果。新的方式理解下面几点:

  • b = b - a 这里实际上是3个值, 巧妙的达到了创建一个中间变量,并且保存这个两个变量。
  • a = a + (b - a ) 是不是得到了 a = b。
  let a = 1,
      b = 2;

  b = b - a; // b(原) - a(原)
  a = a + b;  // a(原) + b(原) - a(原)
  b = a - b;  // b(原) - (b(原) - a(原))
  console.log(a); //2
  console.log(b); //1

ES6采用解构实现的很简单

  [a, b] = [b, a];
  console.log(a); //2
  console.log(b); //1

  如果本文对您有帮助,欢迎关注微信公众号,为您推送更多大前端相关的内容, 欢迎留言讨论,ε=ε=ε=┏(゜ロ゜;)┛。

  您还可以在这些地方找到我:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值