javascript - .splice() 不断删除数组的最后一项

标签 javascript vue.js nuxt.js

我在我的表单上创建了一个功能,我可以通过单击一个按钮为多个图像添加多个文件输入,这按预期工作。现在,当我尝试使用 .splice 删除输入字段时,它会不断删除我的输入字段所在的数组的最后一项,而不是具有匹配索引的输入字段。几个小时以来,我一直在尝试解决这个问题,但我似乎找不到解决方案。我希望有人能告诉我我做错了什么。

这是添加新输入字段的方法:

addInputField() {

    i++

    this.values.links.push({
      id: i,
      url: ''
    });
  }

这是删除输入框的代码:

deleteInputField(index) {

    this.values.links.splice(index, 1);

    const items = this.values.links.filter(item => {

      return item.id > index
    });

    items.forEach(function (item) {
      item.id = item.id -1;
    });
  }

这是删除输入字段的按钮:

<v-icon
  medium
  v-if="link.id > 0"
  color="#FF0000"
  class="ma-4"
  @click="deleteInputField(link.id)"
>

最佳答案

如果你想传递id(link.id),就用这个函数。

function deleteInputField(itemId){
    this.values.links = this.values.links.filter(item => {
        return item.id !== itemId;
    });
}

这将遍历数组并返回除与传递的 itemId 具有相同 id 之外的所有数组。

否则,只需在@click 处理程序中传入来自 v-for 循环的索引

deleteInputField(index) {
    this.values.links.splice(index, 1);
  }

关于javascript - .splice() 不断删除数组的最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58951367/

相关文章:

node.js - nuxt start 需要 node_modules 才能运行

nuxt.js - UpdateOptions() 方法导致错误 [vue-apexcharts]

javascript - 如何在 Angular 2/4+ 和 Socket.io 中关闭 websocket

javascript - 由于所有行名称都相同,如何获取 php 中的行值?

python - Django Rest Framework默认图像字段值返回验证

vue.js - 手动输入日期和/或使用日历 vuetify

javascript - 如何将 SVG 图导出为 pdf

javascript - Angular Material : <md-datepicker> inside <md-tabs> does not render properly

javascript - VueJS v-bind 不适用于 kebab-case

vue.js - 如何预渲染 Vue3 应用程序?