Javascript 从对象数组中的值组合数组?
我有一个包含一堆对象的数组:Javascript 从对象数组中的值组合数组?,javascript,node.js,arrays,object,Javascript,Node.js,Arrays,Object,我有一个包含一堆对象的数组: let sample = [ { name: 'obj1', values: ["value1", "value2"] }, { name: 'obj2', values: ["value3", "value4"] }, { name: 'obj3', values: ["value5", "
let sample = [
{
name: 'obj1',
values: ["value1", "value2"]
},
{
name: 'obj2',
values: ["value3", "value4"]
},
{
name: 'obj3',
values: ["value5", "value6"]
}
]
我需要组合对象上的所有数组,以得到如下结果:
let outputArray = ["value1", "value2", "value3", "value4", "value5", "value6"]
似乎找不到最好的办法。谢谢。您可以先使用将每个对象映射到其值
数组,然后展平结果:
let sample=[
{
名称:“obj1”,
值:[“值1”、“值2”]
},
{
名称:“obj2”,
值:[“值3”、“值4”]
},
{
名称:“obj3”,
值:[“值5”、“值6”]
}
]
让outputArray=sample.flatMap(o=>o.values);
控制台日志(输出阵列)代码>除了Nick的答案之外,如果您不使用babel之类的工具,还可以在不同的环境中使用reduce功能获得更广泛的支持
let sample=[
{
名称:“obj1”,
值:[“值1”、“值2”]
},
{
名称:“obj2”,
值:[“值3”、“值4”]
},
{
名称:“obj3”,
值:[“值5”、“值6”]
}
]
常量结果=样本减少((acc,项目)=>{
返回[…acc,…项值];
}, []);
控制台日志(结果)代码>您可以与以下内容一起使用:
let sample=[
{
名称:“obj1”,
值:[“值1”、“值2”]
},
{
名称:“obj2”,
值:[“值3”、“值4”]
},
{
名称:“obj3”,
值:[“值5”、“值6”]
}
];
让valuesArray=sample.reduce((a,b)=>a.concat(b['values']),[]);
console.log(valuesArray)代码>我认为您想要使用的是array concat()方法。
此方法不会更改现有数组,但会返回一个新数组,其中包含已联接数组的值
我提议的解决办法:
const outputArray = sample[0].values.concat(sample[1].values, sample[2].values);
我认为reduce也应该比flatMap快一点。
let outputArray=[]
sample.forEach(item=> { outputArray.push(item.values.map(val=> val)) })