我具有以下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;
});
});
有人可以最好使用lodash来帮助过滤此json
答案 0 :(得分:1)
let newEmpInfo = empInfo.map( info => {
return { ... info, salary: info.salary.filter( salary => salary.value === 3000 )};
});
这是最简单的方法,不需要lodash。 JS中的简单数组操作。
作为一个旁注,您应该下次添加编码尝试,就像通常在SO中出现的这类问题,人们只是来这里,以便我们解决他们的问题是不受欢迎的,并且通常会引起很多反对。