
40
|
第
3
章
我们可以构造一个函数,使用
Array.push
方法将颜色添加到该数组中:
var addColor = function(title, colors) {
colors.push({ title: title })
return colors;
}
console.log(addColor("Glam Green", list).length) // 4
console.log(list.length) // 4
不过
Array.push
方法并不是一个不可变函数。
addColor
函数会通过向它添加其他字段
的形式改变原来的数组。为了确保颜色数组的不可变性,我们必须使用
Array.concat
方法取而代之:
const addColor = (title, array) => array.concat({title})
console.log(addColor("Glam Green", list).length) // 4
console.log(list.length) // 3
Array.concat
方法会将数组串联起来。这种情况下,它会生成一个包含新的颜色标题
的对象,并将它添加到原生数组的副本上。
用户还可以使用
ES6
的扩展运算符串联数组,同时该操作符可以使用同样的机制拷贝
对象。这里使用了
JavaScript
的新语法,其效果和前面的
addColor
函数是等价的
:
const addColor = (title, list) => [...list, ...