【问题标题】:Filter Array of Inner Arrays Based on Inner Array Length根据内部数组长度过滤内部数组
【发布时间】:2021-12-25 12:00:58
【问题描述】:

我需要过滤掉名为arr的数组中的空数组。

这是我console.log([arr])时看到的:

我试过console.log([arr].filter(arr => arr.length > 0)),但没有成功(得到[]

【问题讨论】:

  • 看来arr 实际上是一个对象,而不是一个数组。你已经通过将它包含在一个数组中来创建一个数组([arr] - 一个长度为 1 的数组,其唯一元素是 arr)但这有点奇怪,实际上并没有帮助。
  • arr 是一个具有一些数组属性的对象。要删除长度为 0 的属性吗?
  • 对象内的所有其他数组再次包含在另一个数组中,因此您需要获取对象中的值(即数组),然后获取该数组中数组的长度
  • 试试这个console.log(Object.values(arr).filter(i => i[0].length))

标签: javascript arrays object filter javascript-objects


【解决方案1】:

正如@robin-zigmond 所指出的,您在这里处理的是一个包含数组属性的对象。

您可以使用delete 运算符从对象中删除属性:

for (let prop in arr) {
  if (arr[prop].length === 0) {
    delete arr[prop];
  }
}

这将从arr 对象中删除所有长度为零的属性。

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多