Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象数组中的值组合数组?_Javascript_Node.js_Arrays_Object - Fatal编程技术网

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)) })