#javascript #arrays #multidimensional-array #filter #splice
#javascript #массивы #многомерный массив #Фильтр #сращивание
Вопрос:
Эй, я пытаюсь удалить элемент в многомерном массиве, когда его свойство массива «texts» пусто. Подход, который я пытаюсь использовать, заключается в использовании метода filter следующим образом:
array.filter(item => item.texts.length === 0)
Но по какой-то причине это не работает. Другим способом было бы найти элемент по его свойству name (к которому у меня есть доступ), получить его индекс, проверить, пуст ли массив texts внутри него, и использовать метод splice для его удаления, но я не уверен, как это сделать в многомерном массиве. Любая помощь будет оценена.
Это массив, с которым я имею дело:
const array = [
0: Object {
name: 'Name 1',
texts[
0: Obj{
id: '123',
body: 'test message'
},
1: Obj{
id: '456',
body: 'test message 2'
}
]
},
1: Object {
name: 'Name 2',
texts[
0: Obj{
id: '789',
body: 'test message3'
},
1: Obj{
id: '101112',
body: 'test message 4'
}
]
}
]
Комментарии:
1. Вам нужно изменить логику
arr.filter(item => item.texts.length !== 0)
. Ваш фильтр в его нынешнем виде возвращает только объекты,text
массивы которых имеют длину 0. (кроме того, пожалуйста, сделайте ваш код допустимым на javascript)
Ответ №1:
Вам нужно убедиться, что ваш объект правильно объявлен, а затем изменить логику.
array.filter(item => item.texts.length !== 0)
const array = [
{
name: 'Name 1',
texts: [
{
id: '123',
body: 'test message'
},
{
id: '456',
body: 'test message 2'
}
]
},
{
name: 'Name 2',
texts: []
}
]
console.log(array.filter(item => item.texts.length !== 0));