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

使用Lodash根据内部对象元素条件移除对象

移除所有count字段值均为0的对象

需求说明

需要处理嵌套结构的数据,移除所有其l数组中所有count字段值都为0的对象(示例中的someid2和someid3),需注意list数组、l数组以及主对象内的对象长度均不固定。

原始数据结构示例:

[
    {
        objectName: {...somefields},
        list: [
            {
                pr: {id: 'someid1'},
                l: [
                       {
                          ...someFields,
                          count: 0
                       },
                       {
                          ...someFields,
                          count: 33
                       },
                ]
            },
            { // 需要移除该对象
                pr: {id: 'someid2'},
                l: [
                       {
                          ...someFields,
                          count: 0
                       },
                       {
                          ...someFields,
                          count: 0
                       },
                       {
                          ...someFields,
                          count: 0
                       }
                ]
            }
        ]
    },
    {
        objectName: {...somefields},
        list: [
            { // 以及该对象
                pr: {id: 'someid3'},
                l: [
                       {
                          ...someFields,
                          count: 0
                       },
                       {
                          ...someFields,
                          count: 0
                       },
                ]
            }
        ]
    }
]

解决方案

可以用JavaScript的数组方法结合处理嵌套结构:

// 数据过滤函数
const filterTargetItems = (rawData) => {
    return rawData.map(mainItem => {
        // 过滤list数组,保留至少有一个count不为0的对象
        const filteredList = mainItem.list.filter(listItem => {
            // 检查当前对象的l数组是否存在count不为0的元素
            return listItem.l.some(itemInL => itemInL.count !== 0);
        });
        // 返回新对象,保留原字段并替换过滤后的list
        return {
            ...mainItem,
            list: filteredList
        };
    });
};

// 使用示例
const originalData = [/* 你的原始数据 */];
const processedData = filterTargetItems(originalData);

代码说明

  • map:遍历主数组中的每个对象,保留原对象的其他字段,仅处理list数组
  • filter:对每个list数组做过滤,只留下符合条件的对象
  • some:检查l数组内是否存在至少一个count不为0的元素——只要有一个满足,就保留当前的list对象;反之则移除

处理后,所有l数组中count全为0的对象会被从list数组中清除,同时不会破坏原数据的其他结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:20:43