splice无法删除javascript中的第一个元素

时间:2017-03-21 15:55:44

标签: javascript angular slice splice

在angular2中,我的HTML在javascript中调用removeThisForm。该事件是文件阵列的对象。对于File Array中的每个对象,我生成一个angular2。

形式的表单
(click)=removeThisForm(event)

在javascript中,我正在尝试删除传入的文件。

removeThisForm(file) {
    var removableIndex = arr.indexOf(file);
    if (removeIndex >= 0) {
        arr = arr.splice(removableIndex);
    } 

我可以删除任何传入的表单,但第一个表单除外。我尝试了shift(),slice()和splice(0,1)。当我拼接(0,1)时,我收到错误“表单提交已取消,因为表单未连接”。

1 个答案:

答案 0 :(得分:5)

您已省略将第二个参数传递给Array.prototype.splice方法(一个表示要删除的元素数的整数)。试试这个:

removeThisForm(file) {
    var removableIndex = arr.indexOf(file);
    if (removeIndex >= 0) {
        arr.splice(removableIndex, 1);
    } 
}

此外,Array.prototype.splice方法返回包含已删除元素的数组。因此,你不能说:

arr = arr.splice(removableIndex, 1);

因为它会使用arr方法的返回值覆盖您的Array.prototype.splice