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

来源:互联网 发布:写时时彩缩水源码教程 编辑:程序博客网 时间:2024/04/29 09:50

数组去重

在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
0 0
原创粉丝点击