按索引过滤对象数组

Posted

技术标签:

【中文标题】按索引过滤对象数组【英文标题】: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 可以是一个对象吗? 【参考方案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()

【讨论】:

以上是关于按索引过滤对象数组的主要内容,如果未能解决你的问题,请参考以下文章

按数组过滤对象数组

对象数组按另一个数组值过滤

Swift:获取由某个属性过滤的对象数组的索引

按对象数组过滤 searchController

Vue JS按多个数组对象项过滤

firebase 按索引从字段数组中删除对象