Фильтрация массива в массиве с использованием lodash - PullRequest
0 голосов
/ 04 ноября 2019

У меня следующая структура 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

1 Ответ

1 голос
/ 04 ноября 2019
let newEmpInfo = empInfo.map( info => {
   return { ... info, salary: info.salary.filter( salary => salary.value === 3000 )};
});

Это самый простой способ, не нужно лодаш. Простые операции с массивами в JS.

В качестве дополнительного примечания вы должны добавить свои попытки кодирования в следующий раз, как обычно в SO, такие вопросы, когда люди просто приходят сюда, чтобы мы могли решить их проблемы, не приветствуются и обычно получают много отрицательных отзывов. .

...