-2

我有以下 JSON 结构。

comapany : XYZ
Emp Info:[
            {
                empName: A,
                empID:1
                salary[
                    {
                        year: 2017,
                        value: 3000
                    },
                    {
                        year: 2018,
                        value: 5000
                    }
                ]
            },
            {
                empName: B,
                empID:2
                salary[
                    {
                        year: 2017,
                        value: 6000
                    },
                    {
                        year: 2018,
                        value: 3000
                    }
                ]
            },
        {
            empName: C,
            empID:3
            salary[
                {
                    year: 2017,
                    value: 3000
                },
                {
                    year: 2018,
                    value: 8000
                }
            ]
        },
    ]

这里 Emp Info 是一个数组,其中包含另一个薪水数组。我想过滤所有价值为 3000 的工资。所以我的输出应该如下所示

comapany : XYZ
Emp Info:[
            {
                empName: A,
                empID:1
                salary[
                    {
                        year: 2017,
                        value: 3000
                    }
                ]
            },
            {
                empName: B,
                empID:2
                salary[
                    {
                        year: 2018,
                        value: 3000
                    }
                ]
            },
        {
            empName: C,
            empID:3
            salary[
                {
                    year: 2017,
                    value: 3000
                }
            ]
        },
    ]

我使用 lodash 尝试了多种方法,但它总是返回所有数据(而不是过滤)。

._filter(data, data => {
     return data.empInfo.salary[0].value === 3000
});

._each(data.empInfo.salary, data => {
     _.filter(data, d=>{
        return d.salary === 3000;
     });
});

._filter(data.empInfo.salary, data => {
    _.each(salary, s => {
        return s === 3000;
    });
});

有人可以帮助过滤这个 json,最好使用 lodash

4

1 回答 1

1
let newEmpInfo = empInfo.map( info => {
   return { ... info, salary: info.salary.filter( salary => salary.value === 3000 )};
});

这是最简单的方法,不需要lodash。JS中的简单数组操作。

作为旁注,您应该在下次添加您的编码尝试,就像通常在 SO 中那样,人们只是来这里以便我们解决他们的问题的这类问题是不受欢迎的,并且通常会得到很多反对票。

于 2019-11-04T09:29:11.450 回答