是否有一种 ES6 方法可以轻松过滤掉不需要的列?假设我们有以下数据:
const foo = [
{
a:'blah',
b:'blah',
c:'blah',
d:[
{ a:'blah', b:'blah', c:'blah', e:'blah', f:'blah'},
{ a:'blah', b:'blah', c:'blah', e:'blah', f:'blah'},
{ a:'blah', b:'blah', c:'blah', e:'blah', f:'blah'},
//... N number of objects
],
},
{
a:'blah',
b:'blah',
c:'blah',
d:[
{ a:'blah', b:'blah', c:'blah', e:'blah', f:'blah'},
{ a:'blah', b:'blah', c:'blah', e:'blah', f:'blah'},
{ a:'blah', b:'blah', c:'blah', e:'blah', f:'blah'},
//... N number of objects
],
},
//... N number of objects
];
我想过滤掉 e 和 f 值,所以我只有以下内容:
[
{
a:'blah',
b:'blah',
c:'blah',
d:[
{ a:'blah', b:'blah', c:'blah' },
{ a:'blah', b:'blah', c:'blah' },
{ a:'blah', b:'blah', c:'blah' },
//... N number of objects
],
},
{
a:'blah',
b:'blah',
c:'blah',
d:[
{ a:'blah', b:'blah', c:'blah' },
{ a:'blah', b:'blah', c:'blah' },
{ a:'blah', b:'blah', c:'blah' },
//... N number of objects
],
},
//... N number of objects
]
我认为它可能与此类似,但我不确定如何处理 d 值:
.map(x=>{ return {a: x.a, b: x.b, c: x.c, d:x.d}})
编辑:有没有办法在不引用不需要的值(e 或 f)的情况下做到这一点?换句话说,仅通过引用您要保留的值 (a,b,c,d)
最佳答案
使用Array#map , spread syntax和 destructuring
const foo=[{a:'blah',b:'blah',c:'blah',d:[{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},],},{a:'blah',b:'blah',c:'blah',d:[{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},],},]
const res = foo.map(({d, ...rest})=>{
return {...rest, d: d.map(({e,f,...rest})=>({...rest}))}
});
console.log(res);
通过仅引用所需变量的解决方案:
const foo=[{a:'blah',b:'blah',c:'blah',d:[{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},],},{a:'blah',b:'blah',c:'blah',d:[{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},],},]
const res = foo.map(({d, ...rest})=>{
return {...rest, d: d.map(({a,b,c})=>({a,b,c}))}
});
console.log(res);
关于Javascript 映射嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54329503/