您的位置:首页 > Web前端 > JavaScript

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

2016-12-07 19:30 351 查看

数组去重

在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript