如何使用扩展运算符使用现有数组取消新值?

时间:2019-04-05 09:38:59

标签: javascript typescript ecmascript-6

我正在尝试使用扩展运算符方法将unshift与现有数组一起使用。遇到错误。有人可以帮助我找到正确的方法吗?

这是我的代码:

uploadedFiles : [...state.uploadedFiles.unshift( (<fileActions.UploadFileSuccess>action).payload ) ]

得到一个错误:

The Number is not array type

谢谢。

2 个答案:

答案 0 :(得分:4)

Array#unshift返回数组的新长度。

您只需要拿走物品而不散开。

uploadedFiles: [(<fileActions.UploadFileSuccess>action).payload, ...state.uploadedFiles]

如果您想更新state.uploadedFiles,则可以提前unshift

state.uploadedFiles.unshift((<fileActions.UploadFileSuccess>action).payload);

uploadedFiles: [...state.uploadedFiles]

答案 1 :(得分:4)

unshift对数组进行突变,并返回数组的新长度,该长度是一个数字,并且不能扩展。您的代码可以归结为:

 [...state.uploadFiles.length]

现在要以一种不变且正确的方式进行操作,不要使用unshift,只需在扩展先前版本之前将元素添加到数组中即可。

 [action.payload, ....state.uploadFiles]