我将如何处理使用 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}
]
功能数据转换map
和reduce
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 } ]
通用函数
上述转换是认知致密,可以分解成两个有用的功能-这两个功能mapReducer
和pair2obj
是通用的,以至于我们可以很容易地重新使用他们在我们的程序的其他部分
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句