首页 > 解决方案 > 当元素的属性为空时删除多维数组中的元素

问题描述

嘿,当他的数组属性“文本”为空时,我正在尝试删除多维数组中的一个元素。我正在尝试的方法是使用 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'
   }
  ]
 }
]

标签: javascriptarraysmultidimensional-arrayfiltersplice

解决方案


您需要确保正确声明您的对象,然后反转逻辑。

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


推荐阅读