【问题标题】:Filter array of objects by index按索引过滤对象数组
【发布时间】:2019-08-04 01:07:05
【问题描述】:

我想按索引过滤对象数组。

<ul>
    <li v-for="(list,index) in lists" v-bind:key="index"
    @dblclick="deleteNote(index)">
    {{list.note}    
    </li>
</ul>

列表被imp的对象填充

var lists = [];

var imp = {
  note: "bla",
  hinweis: "blub",
  showNotiz: false
};

deleteNote(i) {
  let arr = this.lists.filter(item =>
    item.note !== this.lists[i]
  );

  this.lists = arr;
}

【问题讨论】:

  • 首先,note 是一个字符串,lists[i] 是一个对象。或者 note 可以是一个对象吗?

标签: javascript html vue.js


【解决方案1】:

我认为这会奏效

deleteNote(i) {
  this.lists = this.lists.filter((_, index) => index !== i);
}

【讨论】:

    【解决方案2】:

    您需要使用过滤器函数的第二个参数。

    let arr = this.lists.filter( (item, index) =>  
        item.note !== this.lists[index]
    );
    this.lists = arr;
    

    这里是 Filter 的 MDN 文档

    希望这会有所帮助!

    【讨论】:

    • 我认为主要问题是我无法将 String(item.note) 与索引进行比较。
    • 如果我们在lists 变量中包含带有note 键的对象,我们可以很好地实现这一点。
    【解决方案3】:

    从外观上看,您想按索引删除一个项目吗?

    deleteNote(i) {
      this.lists.splice(i, 1);
    }
    

    上面的 sn-p 应该修改现有数组并删除所需索引处的一个元素。

    MDN: Array.prototype.splice()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多