@fessss

Как правильно удалить из массива объект по ключу?

У меня есть метод который создает строит treeview
addChild(item) {
      this.companyShow = true;
      this.selectedItem = item;
    },
addCompany() {
      if (!this.selectedItem.children) {
        this.$set(this.selectedItem, 'children', []);
      }

      const name = this.company;
      // eslint-disable-next-line no-plusplus
      const id = this.nextId++;
      this.selectedItem.children.push({
        id,
        name,
      });
      this.company = '';
      this.companyShow = false;
      this.$refs.tree.updateAll(true);
    },


Но вот как сделать удаление. Совсем не могу понять.
Попробовал так, но не выходит
removeChild(items, i) {
      return items.map((item) => ({ ...item })).filter((item) => {
        if ('children' in item) {
          item.children = this.removeChild(item.children, i.id);
        }
        return item.id !== i.id;
      });
    },
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
Основы js изучите, пожалуйста.
removeChild(items, child) {
  if(!Array.isArray(items) || !child) 
    return items;

  for(let i = items.length; i--;) {
    const { id, children } = items[i];
    
    if(id === child.id)
      items.splice(i, 1);
    else
      this.removeChild(children, child);
  }

  return items;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
swert-tech
@swert-tech
Зачем писать дополнительные функции если у vue есть splice()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы