几个 ES6 函数式编程的小技巧

更新对象

let state = {
    id: 1,
    points: 100,
    name: "Goran"
}

let newState = {
    ...state, //重点在这
    points: 120
}

/*
  {
    id: 1,
    points: 120,
    name: "Goran"
  }
*/

更新数组

原始数组为 [1, 1, 1, 1] ,现在需要改变第三个元素,使其 +1 ,最终结果 [1,1,2,1]

let state = [1, 1, 1, 1]

let index = 2
let newState = [
    ...state.slice(0, index),
    state[index] + 1,
    ...state.slice(index + 1)
]

过滤器

一个元素为纯数字的数组,过滤出所有奇数。

var arr = [0, 1, 2, 3, 4]
arr.filter( x => x%2 === 0 )

累加器

计算出所有数组里元素的总和。

var arr = [0, 1, 2, 3, 4]

arr.reduce( (prev, curr) => prev + curr )
//10
arr.reduce( (prev, curr) => prev + curr , 20)
//30

变量对调

将两个变量的值互相对调。

var a = 1, b = 2;
[a , b] = [b , a]
// a=2, b=1