对象转换成数组的优雅方式

将如下对象转换成数组的优雅方式
将const obj = { a1: 1, b1: 2, a2: 3, b2: 4 }
转换成
const arr = [{ a: 1, b: 2 }, { a: 3, b: 4 }]

阅读 1.5k
1 个回答

参考本站一位大佬的简洁写法。

obj = { a1: 1, b1: 2, a2: 3, b2: 4 }

var res = Object.values(Object.entries(obj).reduce((acc, [key, val]) => (Object.assign(acc[[key.match(/\d/)]] ||= {}, {[key.replace(/\d/, '')]: val}), acc), {}))
console.log(JSON.stringify(res));
VM1330:4 [{"a":1,"b":2},{"a":3,"b":4}]
推荐问题