gpt4 book ai didi

javascript - 将数组转换为对象

转载 作者:行者123 更新时间:2023-12-01 03:33:17 25 4
gpt4 key购买 nike

如何使用 JavaScript 完成将数组数组转换为对象数组的任务?例如。

[
[
[a,b],[c,d],[e,f]
],
[
[g,h],[i,j],[k,l]
]
]

--->

[
{a:b, c:d, e:f}, {g:h, i:j, k:l}
]

最佳答案

使用mapreduce进行功能性数据转换

您可以使用mapreduce达到所需的数据形状

const data = [
[ ['a', 1], ['b', 2], ['c', 3] ],
[ ['d', 4], ['e', 5], ['f', 6] ]
]

const data2 = data.map(pairs =>
pairs.reduce((obj, [k,v]) =>
Object.assign(obj, { [k]: v }), {}))

console.log(data2)
// [ { a: 1, b: 2, c: 3 }, { d: 4, e: 5, f: 6 } ]

<小时/>

通用函数

上述转换是认知密集的,可以分解为两个有用的函数 - 这两个函数 mapReducerpair2obj 足够通用,我们可以轻松地在其他部分重用它们我们的计划

const mapReducer = (f, g) =>
(acc, x) => f (acc, g (x))

const pair2obj = ([x, y]) =>
({ [x]: y })

const data = [
[ ['a', 1], ['b', 2], ['c', 3] ],
[ ['d', 4], ['e', 5], ['f', 6] ]
]

const data2 = data.map (pairs =>
pairs.reduce(mapReducer(Object.assign, pair2obj), {}))

console.log(data2)
// [ { a: 1, b: 2, c: 3 }, { d: 4, e: 5, f: 6 } ]

<小时/>

原生 map

如果你可以使用Map程序中的对象,这可能更好,因为您的数据已经采用 Map 构造函数接受的格式

const data = [
[
['a',1],['b',2],['c',3]
],
[
['d',4],['e',5],['f',6]
]
]

const data2 = data.map(pairs => new Map(pairs))

console.log(data2[0].get('a')) // 1
console.log(data2[0].get('b')) // 2
console.log(data2[0].get('c')) // 3
console.log(data2[1].get('d')) // 4
console.log(data2[1].get('e')) // 5
console.log(data2[1].get('f')) // 6

关于javascript - 将数组转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44425094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com