再不用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
相关文章推荐
- 再不用ES6就Out了--Promise解决回调地狱
- Linux网管笔记(27)两个典型Linux乱码问题的解决
- 今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 关于Eclipse RCP的两个小问题和解决方法
- 两个需要解决的问题
- dreamweaver连接数据库典型问题解决方法
- 解决两个难懂的安全性问题
- 今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- VS.NET两个小问题及解决办法
- 一个典型的wincvs 'unrecognized response `FATAL ERROR: Network error:' 问题解决和认识
- HP平台编译out of memory 问题的解决方法
- VC的两个问题的解决方法
- Fedora Core 2,两个问题及及解决办法
- x346服务器两个问题和解决
- AppFuse中运行setup,在webdoclet中出现OutOfMemoryError问题解决
- 升级CommunityServer2.0出现的两个问题的解决方法
- 在VS.NET 2003中建立项目时遇到的两个问题及解决方法
- dreamweaver连接数据库典型问题解决方法
- 解决Out of memory问题
- 关于ASP.NET2.0 WebPart两个问题的解决...