###数组去重
在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
如果本文对您有帮助,欢迎关注微信公众号,为您推送更多大前端相关的内容, 欢迎留言讨论,ε=ε=ε=┏(゜ロ゜;)┛。

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