Javascript 如何获取一个数组的所有数组对象
数组对象内部有一个目标数组:Javascript 如何获取一个数组的所有数组对象,javascript,ecmascript-6,Javascript,Ecmascript 6,数组对象内部有一个目标数组: [ { _id: 'main1', target: [ { _id: '1', foo: [bar] }, { _id: '2', foo: [bar] } ] }, { _id: 'main2', target: [ { _id: '3', foo: [bar] }, { _id: '4', foo: [bar] } ] } ] 我需要将所有目标
[
{
_id: 'main1',
target: [
{ _id: '1', foo: [bar] },
{ _id: '2', foo: [bar] }
]
},
{
_id: 'main2',
target: [
{ _id: '3', foo: [bar] },
{ _id: '4', foo: [bar] }
]
}
]
我需要将所有目标对象作为一个数组:
需要的结果
targets: [
{ _id: '1', foo: [bar] },
{ _id: '2', foo: [bar] }
{ _id: '3', foo: [bar] },
{ _id: '4', foo: [bar] }
]
我尝试使用map()
但这会产生一个嵌套数组,如:[[{u id:'1',foo:[bar]}]]
var数组=[
{
_id:'main1',
目标:[
{{u id:'1',foo:[“bar”]},
{{u id:'2',foo:[“bar”]}
]
},
{
_id:'main2',
目标:[
{{u id:'3',foo:[“bar”]},
{{u id:'4',foo:[“bar”]}
]
}
]
console.log(
map(item=>item.target)
)
您可以使用concat
加入阵列。使用扩展运算符和map
在阵列中循环
让arr=[{{u id:'main1',target:[{{u id:'1',foo:['bar']},{{u id:'bar']},{{u id:'main2',target:[{u id:'3',foo:['bar']},{u id:'4',foo:['bar']}];
让result=[].concat(…arr.map(o=>o.target));
控制台日志(结果)
您可以使用concat
加入数组。使用扩展运算符和map
在阵列中循环
让arr=[{{u id:'main1',target:[{{u id:'1',foo:['bar']},{{u id:'bar']},{{u id:'main2',target:[{u id:'3',foo:['bar']},{u id:'4',foo:['bar']}];
让result=[].concat(…arr.map(o=>o.target));
控制台日志(结果)代码>
var arr=[
{
_id:'main1',
目标:[
{{u id:'1',foo:[“bar”]},
{{u id:'2',foo:[“bar”]}
]
},
{
_id:'main2',
目标:[
{{u id:'3',foo:[“bar”]},
{{u id:'4',foo:[“bar”]}
]
}
]
var结果=arr.reduce((a,o)=>a.concat(o.target),[]);
控制台日志(结果)代码>
var arr=[
{
_id:'main1',
目标:[
{{u id:'1',foo:[“bar”]},
{{u id:'2',foo:[“bar”]}
]
},
{
_id:'main2',
目标:[
{{u id:'3',foo:[“bar”]},
{{u id:'4',foo:[“bar”]}
]
}
]
var结果=arr.reduce((a,o)=>a.concat(o.target),[]);
控制台日志(结果)代码>您可以使用。它在数组中循环(类似于map()
),但同时创建一个新结果
array.reduce((result, current) => {
result = [...result, ...current.target]
return result;
}, []);
或者,如果不能使用,可以使用concat()
:
array.reduce((result, current) => {
result = result.concat(current.target);
return result;
}, []);
你可以用。它在数组中循环(类似于map()
),但同时创建一个新结果
array.reduce((result, current) => {
result = [...result, ...current.target]
return result;
}, []);
或者,如果不能使用,可以使用concat()
:
array.reduce((result, current) => {
result = result.concat(current.target);
return result;
}, []);
var数组=[
{
_id:'main1',
目标:[
{{u id:'1',foo:[“bar”]},
{{u id:'2',foo:[“bar”]}
]
},
{
_id:'main2',
目标:[
{{u id:'3',foo:[“bar”]},
{{u id:'4',foo:[“bar”]}
]
}
] ;
var结果=[];
for(数组中的var键){
target=数组[key]。目标;
用于(目标中的var kt){
结果推送(目标[kt]);
}
}
控制台日志(结果)代码>
var数组=[
{
_id:'main1',
目标:[
{{u id:'1',foo:[“bar”]},
{{u id:'2',foo:[“bar”]}
]
},
{
_id:'main2',
目标:[
{{u id:'3',foo:[“bar”]},
{{u id:'4',foo:[“bar”]}
]
}
] ;
var结果=[];
for(数组中的var键){
target=数组[key]。目标;
用于(目标中的var kt){
结果推送(目标[kt]);
}
}
控制台日志(结果)
您可以使用reduce
方法()
此答案在连接之前检查属性目标
let targets = obj_arr.reduce((a,c)=>c.target&&a.concat(c.target),[]);
let obj_arr=[{
_id:'main1',
目标:[{
_id:'1',
foo:[“”]
},
{
_id:'2',
foo:[“”]
}
]
},
{
_id:'main2',
目标:[{
_id:'3',
foo:[“”]
},
{
_id:'4',
foo:[“”]
}
]
}
]
让目标=目标值减少((累加器,当前值)=>
current_value.target和accumulator.concat(current_value.target),[]);
控制台日志(目标)
您可以使用reduce
方法()
此答案在连接之前检查属性目标
let targets = obj_arr.reduce((a,c)=>c.target&&a.concat(c.target),[]);
let obj_arr=[{
_id:'main1',
目标:[{
_id:'1',
foo:[“”]
},
{
_id:'2',
foo:[“”]
}
]
},
{
_id:'main2',
目标:[{
_id:'3',
foo:[“”]
},
{
_id:'4',
foo:[“”]
}
]
}
]
让目标=目标值减少((累加器,当前值)=>
current_value.target和accumulator.concat(current_value.target),[]);
控制台日志(目标)代码>
var foo=[
{
“_id”:“main1”,
“目标”:[
{
“_id”:“1”,
“foo”:“[酒吧]”
},
{
“_id”:“2”,
“foo”:“[酒吧]”
}
]
},
{
“_id”:“main2”,
“目标”:[
{
“_id”:“3”,
“foo”:“[酒吧]”
},
{
“_id”:“4”,
“foo”:“[酒吧]”
}
]
}
]
var-bar=[];
foo.map(函数(val){
bar=bar.concat(val.target);
})
console.log(条)
var foo=[
{
“_id”:“main1”,
“目标”:[
{
“_id”:“1”,
“foo”:“[酒吧]”
},
{
“_id”:“2”,
“foo”:“[酒吧]”
}
]
},
{
“_id”:“main2”,
“目标”:[
{
“_id”:“3”,
“foo”:“[酒吧]”
},
{
“_id”:“4”,
“foo”:“[酒吧]”
}
]
}
]
var-bar=[];
foo.map(函数(val){
bar=bar.concat(val.target);
})
console.log(bar)
如果你有下划线或lodash这样的库,你可以使用flatmap函数如果你有下划线或lodash这样的库,你可以使用flatmap函数我不知道为什么有人否决了这一点。这是一个正确的答案(参见我的类似答案)。你可以使用。。。接线员而不是concat我不知道为什么有人否决了这个。这是一个正确的答案(参见我的类似答案)