【发布时间】:2016-10-14 19:06:49
【问题描述】:
我一直在观看 Dan Abramov avoiding-array-mutations 的关于 redux 的视频,并且我已经研究了如何使用 slice 通过 id 从数组中删除一个元素,返回没有突变的新数组。
var arrayOld = ['apple', 'orange', 'fig']
var index = arrayOld.indexOf('orange')
var arrayNew = arrayOld.slice(0,index).concat(arrayOld.slice(index + 1))
// ['apple', 'fig']
我想知道如何使用es6 spread 语法做同样的事情?
我也想知道为什么没有更简单的方法:例如es6 中的辅助函数来执行此操作,它的工作方式与 concat 方法一样简单,您可以在其中传递要删除的元素的 id 并返回新数组,因此基本上是拼接但没有突变。
【问题讨论】:
-
[...arr]与arr.slice()相同,您可以“切片和拼接”以消除副作用 -
在视频中,他向您展示了这种使用数组传播的方式
[...arrayOld.slice(0,index), ...arrayOld.slice(index+1)]
标签: javascript arrays ecmascript-6