【问题标题】:splice can't remove the first element in javascriptsplice 无法删除 javascript 中的第一个元素
【发布时间】:2017-08-13 09:58:42
【问题描述】:

在 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);

标签: javascript angular slice splice


【解决方案1】:

您省略了将第二个参数传递给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

【讨论】:

  • 哦哈。我不知道它会返回一个已删除元素的数组。谢谢!
猜你喜欢
  • 2021-09-23
  • 1970-01-01
  • 2021-03-02
  • 2013-08-20
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2017-12-15
相关资源
最近更新 更多