Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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_Arrays - Fatal编程技术网

Javascript 将对象数组中的多个数组合并为单个数组

Javascript 将对象数组中的多个数组合并为单个数组,javascript,arrays,Javascript,Arrays,我有一个对象,其中数据是一个对象数组,在数据对象中我有一个用户属性,它是一个数组 我需要将所有用户放入一个数组中。我已经用map和concat写过了 有没有更好的解决方案,或者这是正确的 请参阅下面的代码片段 var-response={data:[{users:[1,2,3]},{users:[4,5,6]} var users=response.data.map(o=>o.users) const userscolection=[].concat(…用户) console.log(user

我有一个对象,其中数据是一个对象数组,在数据对象中我有一个用户属性,它是一个数组

我需要将所有用户放入一个数组中。我已经用
map
concat
写过了

有没有更好的解决方案,或者这是正确的

请参阅下面的代码片段

var-response={data:[{users:[1,2,3]},{users:[4,5,6]}
var users=response.data.map(o=>o.users)
const userscolection=[].concat(…用户)
console.log(usersCollection)
您可以使用:

flat()
方法创建一个新数组,所有子数组元素递归连接到该数组中,直到指定的深度

深度|可选

指定嵌套数组结构应展平的深度级别。默认值为1

var-response={data:[{users:[1,2,3]},{users:[4,5,6]}
var users=response.data.map(o=>o.users.flat();

console.log(用户)如果使用ES6,则利用
排列
阵列的威力。减少

var响应={
数据:[{
用户:[1,2,3]
}, {
用户:[4,5,6]
}]
}
var users=response.data.reduce((累加器,obj)=>[…累加器,…obj.users]);

console.log(用户)使用ES6扩展运算符您可以快速完成这项工作

var response = {data: [{users: [1,2,3]}, {users: [4,5,6]}]}

let wantedArray = [];
for(let v of response.data){
  wantedArray.push(...v.users);
}

console.clear();
console.log(wantedArray);
该方法首先使用映射函数映射每个元素, 然后将结果展平为一个新数组。它和地图一样 后跟深度为1的平面,但平面贴图通常非常有用,如 将两者合并到一个方法中稍微更有效一些

response.data.flatMap(({users})=>users)

但是,如果您在浏览器中运行,则应注意供应商支持。

您可以使用ES6


请不要发布重复的答案。这个精确的解决方案已经提供。仅供参考-JS社区中的绝大多数权威机构建议使用大写变量专门用于定义…,,,的命名约定。nodejs版本10以上是否支持此平面方法?
var response = {data: [{users: [1,2,3]}, {users: [4,5,6]}]}    
var NEWARRAY = [];
for(var v of response.data){
  NEWARRAY.push(...v.users);
}
console.log(NEWARRAY);