Vue JS, как удалить объект на основе значений массива - PullRequest
1 голос
/ 26 сентября 2019

У меня есть массив объектов, таких как:

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

И у меня также есть простой массив, подобный этому:

selected_types = [1, 2]

Желаемый результат должен фильтровать типы "" массив и исключить все идентификаторы, которые присутствуют в массиве " selected_types ", как показано ниже:

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 ]

3 голосов
/ 26 сентября 2019

Просто используйте 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);
0 голосов
/ 26 сентября 2019

Вы можете достичь без цикла for.Если вам нужны значения в одном и том же массиве, вы можете вернуть obj той же переменной.Как показано ниже:

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

Если вы хотите, чтобы объект obj в новом массиве, вы могли достичь следующим образом

let final_types = []
final_types = types.filter(obj => {
     if (selected_types.indexOf(obj.id) === -1) {
         return obj
     }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...