Vue JS如何根据数组值删除对象

时间:2019-09-26 08:57:12

标签: javascript arrays vue.js ecmascript-6 vue-component

我有一个对象数组,如:

types: [
{
 id: 1,
 name: "Hello"
},
{
 id: 2,
 name: "World"
},
{
 id: 3,
 name: "Jon Doe"
}
]

我也有一个像这样的简单数组:

selected_types = [1, 2]

所需结果应过滤“类型” 数组,并排除“ selected_types” 数组中存在的所有ID,如下所示:

final_types: [
{
 id: 3,
 name: "Jon Doe"
}
]

我完全不知道如何实现这一目标,但是下面是我的尝试:

   this.types.filter(obj => {
        for (let i = 0; i < this.selected_types.length; i++) {
          if (obj.id !== selected_types[i]) {
            final_types.push(attribute);
          }
        }
      });

2 个答案:

答案 0 :(得分:3)

只需使用this.types.filter(({id}) => !this.selected_types.includes(id))

let types = [{
    id: 1,
    name: "Hello"
  },
  {
    id: 2,
    name: "World"
  },
  {
    id: 3,
    name: "Jon Doe"
  }
]

let selected_types = [1, 2];
let resArr = types.filter(({id}) => !selected_types.includes(id));
console.log(resArr);

答案 1 :(得分:0)

您可以实现Javascript的本机方法过滤器,该过滤器最终会返回一个新对象

let types = [{
    id: 1,
    name: "Hello"
  },
  {
    id: 2,
    name: "World"
  },
  {
    id: 3,
    name: "Jon Doe"
  }
]

let selected_types = [1, 2];

types = types.filter(obj => {
  if (selected_types.indexOf(obj.id) === -1) {
     return obj
  }
});