Javascript 将二维数组排序为具有键的对象数组

Javascript 将二维数组排序为具有键的对象数组,javascript,arrays,lodash,Javascript,Arrays,Lodash,我这辈子都搞不懂 我需要获取一个二维数组,并在另一个数组中创建一个具有指定键名的对象数组。我该怎么做呢 我正在尝试返回如下对象: 所需成果: 当前代码: 初次检查时,Reduce函数从来都不容易理解。看看i&j,它们是在哪里创建的,它们是如何使用的 变量集合=[ ['map-1','map-2','map-3','map-4','map-5','map-6'], ['user-1','user-2','user-3','user-4','user-5','user-6'], [‘1型’、‘2型

我这辈子都搞不懂

我需要获取一个二维数组,并在另一个数组中创建一个具有指定键名的对象数组。我该怎么做呢

我正在尝试返回如下对象:

所需成果:

当前代码:


初次检查时,Reduce函数从来都不容易理解。看看i&j,它们是在哪里创建的,它们是如何使用的

变量集合=[ ['map-1','map-2','map-3','map-4','map-5','map-6'], ['user-1','user-2','user-3','user-4','user-5','user-6'], [‘1型’、‘2型’、‘3型’、‘4型’、‘5型’、‘6型’], ['name-1','name-2','name-3','name-4','name-5','name-6'], ['street-1','street-2','street-3','street-4','street-5','street-6'], [“城市一号”、“城市二号”、“城市三号”、“城市四号”、“城市五号”、“城市六号”] ]; 变量键=[ 地图、用户、“类型”、名称、街道、“城市” ]; //迭代内部数组中对象的长度 var result=集合[0]。映射,j=>{ //对于每个键,在其名称下将值保存在对象中,并将集合中的值保存在键索引和所创建项的索引位置 return key.reduceobj,key,i=>{ obj[key]=集合[i][j]; 返回obj; }, {}; };
console.logresult 初次检查时,Reduce函数从来都不容易理解。看看i&j,它们是在哪里创建的,它们是如何使用的

变量集合=[ ['map-1','map-2','map-3','map-4','map-5','map-6'], ['user-1','user-2','user-3','user-4','user-5','user-6'], [‘1型’、‘2型’、‘3型’、‘4型’、‘5型’、‘6型’], ['name-1','name-2','name-3','name-4','name-5','name-6'], ['street-1','street-2','street-3','street-4','street-5','street-6'], [“城市一号”、“城市二号”、“城市三号”、“城市四号”、“城市五号”、“城市六号”] ]; 变量键=[ 地图、用户、“类型”、名称、街道、“城市” ]; //迭代内部数组中对象的长度 var result=集合[0]。映射,j=>{ //对于每个键,在其名称下将值保存在对象中,并将集合中的值保存在键索引和所创建项的索引位置 return key.reduceobj,key,i=>{ obj[key]=集合[i][j]; 返回obj; }, {}; }; console.logresult 变量集合=[ ['map-1','map-2','map-3','map-4','map-5','map-6'], ['user-1','user-2','user-3','user-4','user-5','user-6'], [‘1型’、‘2型’、‘3型’、‘4型’、‘5型’、‘6型’], ['name-1','name-2','name-3','name-4','name-5','name-6'], ['street-1','street-2','street-3','street-4','street-5','street-6'], [“城市一号”、“城市二号”、“城市三号”、“城市四号”、“城市五号”、“城市六号”] ]; 变量键=[ 地图、用户、“类型”、名称、街道、“城市” ] 常量结果=对象 .离心收集 .reduceac,[,x],i=>{ 返回x.mapy,j=>{ …acc[j], [键[i]]:y } }, []; console.logresult 变量集合=[ ['map-1','map-2','map-3','map-4','map-5','map-6'], ['user-1','user-2','user-3','user-4','user-5','user-6'], [‘1型’、‘2型’、‘3型’、‘4型’、‘5型’、‘6型’], ['name-1','name-2','name-3','name-4','name-5','name-6'], ['street-1','street-2','street-3','street-4','street-5','street-6'], [“城市一号”、“城市二号”、“城市三号”、“城市四号”、“城市五号”、“城市六号”] ]; 变量键=[ 地图、用户、“类型”、名称、街道、“城市” ] 常量结果=对象 .离心收集 .reduceac,[,x],i=>{ 返回x.mapy,j=>{ …acc[j], [键[i]]:y } }, [];
console.logresult 您可以减少数组并使用所需的属性构建新对象

变量集合=['map-1'、'map-2'、'map-3'、'map-4'、'map-5'、'map-6']、['user-1'、'user-2'、'user-3'、'user-4'、'user-6']、['type-1'、'name-2'、'name-3'、'name-4'、'name-5'、'name-6']、['street-1'、'street-2'、'street-3'、'street-4'、'street-5'、'street-6'],[“城市一号”、“城市二号”、“城市三号”、“城市四号”、“城市五号”、“城市六号”], 键=[地图,用户,'类型',名称,街道,'城市'], 结果=collection.reducer,a,i=>{ a、 forEachv,j=>r[j]=r[j]|{}[keys[i]]=v; 返回r; }, []; console.logresult;
.作为控制台包装{max height:100%!important;top:0;}您可以减少数组并使用所需的属性构建新对象

变量集合=['map-1'、'map-2'、'map-3'、'map-4'、'map-5'、'map-6']、['user-1'、'user-2'、'user-3'、'user-4'、'user-6']、['type-1'、'name-2'、'name-3'、'name-4'、'name-5'、'name-6']、['street-1'、'street-2'、'street-3'、'street-4'、'street-5'、'street-6'],[“城市一号”、“城市二号”、“城市三号”、“城市四号”、“城市五号”、“城市六号”], 键=[地图,用户,'类型',名称,街道,'城市'], 结果=collection.reducer,a,i=>{ a、 forEachv,j=>r[j]=r[j]|{}[keys[i]]=v; 返回r; }, []; 清汤 le.logresult; .as控制台包装{max height:100%!important;top:0;}使用.unzip将集合转换为行,然后映射转换后的集合,并通过.zipObject将每一行与键组合起来:

const collection=['map-1','map-2','map-3','map-4','map-5','map-6'],['user-1','user-2','user-3','user-6'],['type-1','type-2','type-3','type-5','type-6'],['name-1','name-2','name-3','name-4','name-5','name-6'],['street-1','street-2','street-3','street-4','street-5','street-6'],[‘城市一’、‘城市二’、‘城市三’、‘城市四’、‘城市五’、‘城市六’]; 常量键=[地图,用户,'类型',名称,街道,城市]; const result=\uu.unzipcollection.mapo=>\uu.zipObjectkeys,o; console.logresult; .作为控制台包装{最大高度:100%!重要;顶部:0;} 使用u.unzip将集合转换为行,然后映射转换后的集合,并通过u.zipObject将每一行与键组合起来:

const collection=['map-1','map-2','map-3','map-4','map-5','map-6'],['user-1','user-2','user-3','user-6'],['type-1','type-2','type-3','type-5','type-6'],['name-1','name-2','name-3','name-4','name-5','name-6'],['street-1','street-2','street-3','street-4','street-5','street-6'],[‘城市一’、‘城市二’、‘城市三’、‘城市四’、‘城市五’、‘城市六’]; 常量键=[地图,用户,'类型',名称,街道,城市]; const result=\uu.unzipcollection.mapo=>\uu.zipObjectkeys,o; console.logresult; .作为控制台包装{最大高度:100%!重要;顶部:0;}
[
  {
    map: 'map-1',
    user: 'user-1',
    type: 'type-1',
    name: 'name-1',
    street: 'street-1' ,
    city: 'city-1'
  },
  {
    map: 'map-2',
    user: 'user-2',
    type: 'type-2',
    name: 'name-2',
    street: 'street-2' ,
    city: 'city-2'
  }
  ...
]
var collection = [
  ['map-1', 'map-2', 'map-3', 'map-4', 'map-5', 'map-6'],
  ['user-1', 'user-2', 'user-3', 'user-4', 'user-5', 'user-6'],
  ['type-1', 'type-2', 'type-3', 'type-4', 'type-5', 'type-6'],
  ['name-1', 'name-2', 'name-3', 'name-4', 'name-5', 'name-6'],
  ['street-1', 'street-2', 'street-3', 'street-4', 'street-5', 'street-6'],
  ['city-1', 'city-2', 'city-3', 'city-4', 'city-5', 'city-6']
];
var keys = [
  "map", "user", 'type', "name", "street", 'city'
]
const arrayColumn = (arr, n) => arr.map((x, i) => {
  return {[keys[i]]:x[n]}
});

let x = keys.map((x, i)=>{
  return arrayColumn(collection, i)
})
console.log(x)