数组中子元素为空数组时去掉为空的数组

数组中子元素为空数组时去掉为空的数组使用过滤的方式即可:

var arrayOut2 = [
        [{name:'张无忌',age:28},{name:'赵敏',age:24}],
        [],
        [{name:'宋青书',age:28},{name:'周芷若',age:26}],
        [{name:'成昆',age:48}],
        []
    ]
    var res = arrayOut2.filter(item => {
        return item.length > 0
    });
    console.log(res)

得到的结果是三个子元素:在这里插入图片描述

那么当数据更为复杂的时候,比如数组A中包含对象A,对象A中包含below数组B,below数组B又包含对象B,对象B又包含below空数组,当对象B的below数组为空时,删掉整个对象B。

数据例子如下展示:
其中arrayOut是数组Aname: '五比’的是对象A,需要删掉整个类似**{name: ‘比价格’,below:[]},**的数据

 var arrayOut= [
       {name: '五比',below:[
            {name: '比高度',below:[
                {content: '比跳高高度'},
                {content: '比站立高度'},
                {content: '比摸高高度'},
            ]},
            {name: '比质量',below:[
                {content: '比质量1'},
                {content: '比质量2'},
                {content: '比质量3'},
            ]},
            {name: '比价格',below:[]},
            {name: '比服务',below:[
                {content: '比服务1'},
                {content: '比服务2'},
                {content: '比服务3'},
            ]},
            {name: '比服务',below:[]},
        ]},
        {name: '评测',below:[
            {name: '测品质',below:[]},
            {name: '测数量',below:[
                {content: '测数量1'},
                {content: '测数量2'},
                {content: '测数量3'},
            ]},
            {name: '测指数',below:[]},
            {name: '测有害物质',below:[]},
            {name: '测合格率',below:[
                {content: '测合格率1'},
                {content: '测合格率2'},
                {content: '测合格率3'},
            ]},
        ]},
    ]

那么现在使用如下代码即可达到对应效果:

arrayOut.forEach((item) => {
        console.log(item)
        var idxArr = []
        item.below.forEach((it, idx) => {
            var name = it.below.length <= 0 ? it.name : ''
            if (name !== '') {
                idxArr.unshift(idx)
            }
        })
        var number = idxArr.length
        for (var i = 0; i < number; i++) {
            console.log('idxarr[i]',idxArr[i])
            item.below.splice(idxArr[i], 1)
        }
    })
    console.log(arrayOut)

此处使用unshift是因为把数组中排序靠后的先删除,便不会影响后续的删除,如果从下标较小的开始删除。可能会出现不能完全删掉空数组对应的数据。
从打印结果来看,由较大的下标开始删除:
在这里插入图片描述
最后处理得到的数据如下,分别是3条和2条:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值