你可以从这里获得:
[ [1, 2, 3]
, [4, 5, 6]
, [7, 8, 9]
]
转换为:
[ [1, 4, 7]
, [2, 5, 8]
, [3, 6, 9]
]
使用此函数:
const combine =
(...arrs) =>
[ arrs.map(xs => xs[0])
, ... ( arrs.every(xs => xs.length === 1)
? []
: combine(...arrs.map(xs => xs.slice(1)))
)
];
combine
( [1, 2, 3]
, [4, 5, 6]
, [7, 8, 9]
);
然后从这个开始:
[ [1, 4, 7]
, [2, 5, 8]
, [3, 6, 9]
]
转换为:
[ {arr1: 1, arr2: 4, arr3: 7}, {arr1: 2, arr2: 5, arr3: 8}, {arr1: 3, arr2: 6, arr3: 9}]
使用此函数:
const to_obj =
(...arrs) =>
arrs.map(arr =>
Object.fromEntries(
arr.map((x, i) => [`arr${i+1}`, x])));
to_obj
( [1, 4, 7]
, [2, 5, 8]
, [3, 6, 9]
)
希望将这两个功能连接在一起很简单。
关于性能的说明
对于正好有10个元素的10个数组,很难判断哪种解决方案比另一种表现更好。您应该选择在可读性或维护方面感觉正确的解决方案。
按照这些标准,您应该排除我的解决方案;我只是想分享一种不同的方法。
arr1
不能作为期望的属性名称,所以我稍微改进了我的答案。你可以考虑使用它,因为它不仅可以很好地扩展,还可以分配不能作为变量名的属性名称,而且更重要的是,它的速度显著更快,特别是对于较大的数据集。 - Yevhen Horbunkov