You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中过滤嵌套数组中的null值?

JavaScript过滤嵌套数组中的null值

你当前的代码只对外层数组做了过滤,但外层数组里的唯一元素是那个包含null的子数组,它本身不是null,所以过滤后结果和原数组一样,没处理到子数组里的null。

要过滤嵌套数组里的null,分两种情况处理:

1. 仅二维数组(外层数组元素都是子数组)

用map遍历外层数组的每个子数组,再对每个子数组用filter剔除null:

const test = [
  [
    null,
    {
        "start_time": "2022-08-25T08:45:00.000Z",
        "end_time": "2022-08-25T09:45:00.000Z"
    },
    null,
    null,
    null,
    null,
    {
        "start_time": "2022-08-25T10:00:00.000Z",
        "end_time": "2022-08-25T11:00:00.000Z"
    },
  ]
]

let arr = test.map(subArr => subArr.filter(item => item !== null))

console.log(arr);
// 输出结果:[[{start_time: "2022-08-25T08:45:00.000Z", end_time: "2022-08-25T09:45:00.000Z"}, {start_time: "2022-08-25T10:00:00.000Z", end_time: "2022-08-25T11:00:00.000Z"}]]

2. 任意深度的嵌套数组

如果数组嵌套层数不确定,可以写一个递归函数,逐层过滤null:

function filterNestedNulls(arr) {
  // 先过滤当前数组的null元素
  return arr.filter(item => item !== null).map(item => {
    // 如果元素是数组,递归处理;否则直接返回
    return Array.isArray(item) ? filterNestedNulls(item) : item
  })
}

// 使用示例
let arr = filterNestedNulls(test)
console.log(arr);

这个递归函数会处理所有层级的数组,不管嵌套多深,都会把里面的null全部剔除。

内容的提问来源于stack exchange,提问作者Stikoun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:27:30