如何在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
相关产品推荐
相关产品推荐

