译者按:
技巧虽好、重在掌握并使用起来!
为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。
1. 删除数组尾部元素
一个简单的用来清空或则删除数组尾部元素的简单方法就是改变数组的length属性值。
const arr = [11, 22, 33, 44, 55, 66];
arr.length = 3; console.log(arr);
arr.length = 0; console.log(arr); console.log(arr[2]);
|
2.使用对象解构来模拟命名参数
如果你需要将一系列可选项作为参数传入函数,那么你也许倾向于使用了一个对象(Object)来定义配置(Config)。
doSomething({ foo: 'Hello', bar: 'Hey!', baz: 42 }); function doSomething(config) { const foo = config.foo !== undefined ? config.foo : 'Hi'; const bar = config.bar !== undefined ? config.bar : 'Yo!'; const baz = config.baz !== undefined ? config.baz : 13; }
|
这是一个陈旧、但是很有效的方法,它模拟了JavaScript中的命名参数。不过呢,在
doSomething
中处理
config
的方式略显繁琐。在ES2015中,你可以直接使用对象解构。
function
doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 }) { }
|
如果你想让这个参数是可选的,也很简单。
function doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 } = {}) { }
|
3. 使用对象解构来处理数组
可以使用对象解构的语法来获取数组的元素:
const csvFileLine = '1997,John Doe,US,[email protected],New York'; const { 2: country, 4: state } = csvFileLine.split(',');
|
4. 在switch语句中用范围值
可以使用下面的技巧来写满足范围值的switch语句:
function getWaterState(tempInCelsius) { let state; switch (true) { case (tempInCelsius <= 0): state = 'Solid'; break; case (tempInCelsius > 0 && tempInCelsius < 100): state = 'Liquid'; break; default: state = 'Gas'; } return
state; }
|
5. await多个async函数
在使用async/await的时候,可以使用Promise.all来await多个async函数。
await Promise.all([anAsyncCall(), thisIsAlsoAsync(), oneMore()])
|
6. 创建一个纯(pure)对象
你可以创建一个100%的纯对象,他不从
Object
中继承任何属性或则方法(比如,
constructor
,
toString()
等等)。
const pureObject = Object.create(null); console.log(pureObject); console.log(pureObject.constructor); console.log(pureObject.toString); console.log(pureObject.hasOwnProperty);
|
7. 格式化JSON代码
JSON.stringify
不止可以将一个对象字符化,还可以格式化输出JSON对象。
const obj = { foo: { bar: [11, 22, 33, 44], baz: { bing: true, boom: 'Hello' } } };
JSON.stringify(obj, null, 4);
|
8. 从数组中移除重复元素
ES2015中,有了集合的语法。通过使用集合语法和Spread操作,可以很容易将重复的元素移除:
const removeDuplicateItems = arr => [...new Set(arr)]; removeDuplicateItems([42, 'foo', 42, 'foo', true, true]);
|
9. 平铺多维数组
使用Spread操作,可以很容易去平铺嵌套多维数组:
const arr = [11, [22, 33], [44, 55], 66]; const flatArr = [].concat(...arr);
|
可惜,上面的方法仅仅适用于二维数组。不过,通过递归,我们可以平铺任意维度的嵌套数组。
unction flattenArray(arr) { const flattened = [].concat(...arr); return flattened.some(item
|