// 对数组中的所有值求和
// 使用一个循环,但是那样会很浪费。
var numbers = [3, 5, 7, 2];
var sum = numbers.reduce((x, y) => x + y);
console.log(sum); // returns 17
// 条件短路
// 下面是常写的代码
if (hungry) {
goToFridge();
}
// 进一步简化代码,同时使用变量和函数:
hungry && goToFridge()
// 对条件使用或(OR)逻辑
// 以前在函数开始时声明变量,只是为了避免在出现意外错误时遇到
// undefined。
function doSomething(arg1) {
arg1 = arg1 || 32; // if it's not already set, arg1 will have 32 as a default value
}
// 逗号运算符
let x = 1;
x = (x++, x);
console.log(x);
// expected output: 2
x = (2, 3);
console.log(x);
// expected output: 3
// 扩展运算符
// 轻松移除数组中的重复项:
const removeDuplicate = arr => [...new Set(arr)]
let result = removeDuplicate([42, 42, '11', '11', true, true, null, null])
console.log(result)//[42, "11", true, null]
// 使用扩展运算符可以快速扁平化二维数组:
const arr = [1, [2, 3], [4, 5]]
const flatArr = [].concat(...arr)
console.log(flatArr)//[1, 2, 3, 4, 5]
// 上面的技巧只能适用二维数组,使用递归,可以扁平化任意纬度数组:
function flattenArray(arr) {
const flatArr = [].concat(...arr)
return flatArr.some(item => Array.isArray(item)) ? flattenArray(flatArr) : flatArr
}
const arr = [1, [2, 3], [4, 5, [6, 7, [8, 9]]]]
console.log(flattenArray(arr))//[1, 2, 3, 4, 5, 6, 7, 8, 9]
// 动态属性名称
const dynamic = 'flavour';
var item = {
name: 'Coke',
[dynamic]: 'Cherry'
}
console.log(item);
// { name: "Coke", flavour: "Cherry" }
评论