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

Mat*_*pow 3 javascript slice splice angular

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

(click)=removeThisForm(event)
Run Code Online (Sandbox Code Playgroud)

在javascript中,我试图删除传入的文件.

removeThisForm(file) {
    var removableIndex = arr.indexOf(file);
    if (removeIndex >= 0) {
        arr = arr.splice(removableIndex);
    } 
Run Code Online (Sandbox Code Playgroud)

我可以删除任何传入的表单,除了第一个.我尝试了shift(),slice()和splice(0,1).当我拼接(0,1)时,我收到错误"表单提交被取消,因为表单没有连接".

Sei*_*vic 5

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

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

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

arr = arr.splice(removableIndex, 1);
Run Code Online (Sandbox Code Playgroud)

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

  • 哦哈。我不知道它返回一个已删除元素的数组。谢谢! (2认同)