JavaScript中splice无法删除第一个元素

6
在Angular2中,我的HTML调用JavaScript中的removeThisForm函数。事件是File Array对象。对于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)。当我使用splice(0,1)时,出现了“表单提交取消,因为表单未连接”的错误。


尝试使用 arr.splice(removableIndex,1); - Karthik VU
1个回答

6
你未传递第二个参数到 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);

因为这会用Array.prototype.splice方法的返回值覆盖你的arr


2
哦哈。我不知道它返回一个已删除元素的数组。谢谢! - Matt-pow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接