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