Javascript映射嵌套元素
是否有ES6方法可以轻松过滤掉不需要的列?假设我们有以下数据:Javascript映射嵌套元素,javascript,Javascript,是否有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',
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的值,这也是一种解决方案,但并非迄今为止最好的解决方案:
var result = foo.map( e => {
delete e.d[0].e;
delete e.d[0].f;
return e;
});
console.log(result);
这项工作可以以动态的方式进行
编辑:我使此解决方案更具动态性:
var unwantedIndex = [
'e', 'f'
];
var r = foo.map( e => {
for (let data of e.d) {
for (let indx of unwantedIndex) {
if (data[indx]) {
delete data[indx];
}
}
}
return e;
});
console.log(r);
这也是一个解决方案,但不是迄今为止最好的:
var result = foo.map( e => {
delete e.d[0].e;
delete e.d[0].f;
return e;
});
console.log(result);
这项工作可以以动态的方式进行
编辑:我使此解决方案更具动态性:
var unwantedIndex = [
'e', 'f'
];
var r = foo.map( e => {
for (let data of e.d) {
for (let indx of unwantedIndex) {
if (data[indx]) {
delete data[indx];
}
}
}
return e;
});
console.log(r);
使用贴图遍历阵列并对不需要的对象进行切片。您创建的数组是错误的,它从来没有键值对。也解决了这个问题 常数foo=[ { a:‘废话’, b:‘废话’, c:‘废话’, 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对象数 ], }, { a:‘废话’, b:‘废话’, c:‘废话’, 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对象数 ], }, //…N对象数 ]; console.logfoo.mape=>{ e、 d.forEachx=>{delete x.e;delete x.f} 返回e;
} 使用贴图遍历阵列并对不需要的对象进行切片。您创建的数组是错误的,它从来没有键值对。也解决了这个问题 常数foo=[ { a:‘废话’, b:‘废话’, c:‘废话’, 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对象数 ], }, { a:‘废话’, b:‘废话’, c:‘废话’, 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对象数 ], }, //…N对象数 ]; console.logfoo.mape=>{ e、 d.forEachx=>{delete x.e;delete x.f} 返回e; } 使用,以及 (a:“布拉H”,b:“布拉H”,c:“布拉H”,d:[[a:“布拉H”,b:“布拉H”,b:“布拉H”,c:“布拉H”,c:“布拉H”,b:“布拉H”,c:“布拉H”,b:“布拉H”,b:“布拉H”,b:[a:“布拉H”,b:[a:“布拉H,[a:“布拉H”,b:“布拉H”,b:“布拉H”,b:“布拉H”,b:“布拉H”,b:“布拉H”,b:,e:“布拉H”,e:“布拉H”,e:“布拉H”,e:,e:,e:,e:,e:,e:,e:,e:,e:,e:,e:,e:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f{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}=>{ 返回{…rest,d:d.map{e,f,…rest}=>{…rest} }; console.logres;使用,以及 (a:“布拉H”,b:“布拉H”,c:“布拉H”,d:[[a:“布拉H”,b:“布拉H”,b:“布拉H”,c:“布拉H”,c:“布拉H”,b:“布拉H”,c:“布拉H”,b:“布拉H”,b:“布拉H”,b:[a:“布拉H”,b:[a:“布拉H,[a:“布拉H”,b:“布拉H”,b:“布拉H”,b:“布拉H”,b:“布拉H”,b:“布拉H”,b:,e:“布拉H”,e:“布拉H”,e:“布拉H”,e:,e:,e:,e:,e:,e:,e:,e:,e:,e:,e:,e:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f:,f{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}=>{ 返回{…rest,d:d.map{e,f,…rest}=>{…rest} };
console.logres;您可以解构不需要的属性,并获取属性的其余参数。对于嵌套数组,您还需要迭代 常数 过滤器={e,f,…rest}=>{ 对象 .entriesrest .filter[,v]=>Array.isArrayv .forEach[k,v]=>Object.assignrest,{[k]:v.mapfilter}; 返回休息; }, foo=[{a:'blah',b:'blah',c:'blah',d:[{a:'blah',b:'blah',b:'blah',c:'blah',e:'blah',c:'blah',d:{a:'blah',b:'blah',b:'blah',c:'blah',c:'blah',c:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',b:'blah'',{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'}]}; console.logfoo.mapfilter;
.作为控制台包装{max height:100%!important;top:0;}您可以解构不需要的属性,并获取属性的其余参数。对于嵌套数组,您还需要迭代 常数 过滤器={e,f,…rest}=>{ 对象 .entriesrest .filter[,v]=>Array.isArrayv .forEach[k,v]=>Object.assignrest,{[k]:v.mapfilter}; 返回休息; }, 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',d:[{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'},{a:'blah',b:'blah',c:'blah',e:'blah',c:'blah',e:'blah'},{; console.logfoo.mapfilter;
.作为控制台包装器{max height:100%!important;top:0;}您的数据无效,因为数组不能有文字表示法的属性。我猜您的意思是d:[{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah'}]而不是d:[a:'blah',b:'blah',c:'blah',e:'blah',f:'blah']修复了错误。谢谢你可以这样做吗?foo.mapx=>{return{a:x.a,b:x.b,c:x.c,d:x.d.mapxxxxxx}}你的数据无效,因为数组不能有文字符号的属性。我猜你的意思是d:[{a:'blah',b:'blah',c:'blah',e:'blah',f:'blah}]而不是d:[a:'blah',b:'blah',c:'blah',e:'blah',f:'blah']修复了错误。谢谢你能这样做吗?foo.mapx=>{return{a:x.a,b:x.b,c:x.c,d:x.d.mapxxxxxx}}对不起,修复了我的打字错误。我们的结构不同,所以请重新检查原始帖子对不起,修复了我的打字错误。我们的结构不同,请重新检查原始postGreat,谢谢!有没有一种方法可以在不引用不需要的值e或f的情况下执行此操作?换句话说,仅通过引用要保留的值a、b、c、dGreat,谢谢!有没有一种方法可以在不引用不需要的值e或f的情况下执行此操作?换句话说,仅通过引用要保留的值a、b、c、d