我有一个带有值数组的对象
<小时/>{firstName: ['John', 'Mike']}, lastName: ['Doe', 'Smith']}
,
现在我有一个带有数组的空对象
<小时/>const newData = {}
newData.ppl = []
如何在 ppl
数组中得到这样的结果: ppl = [{firstName: 'John', lastName: 'Doe'}, {firstName: 'Mike', lastName: '史密斯'}]
最佳答案
使用 Object.entries
快速实现, reduce
,和forEach
:
const srcData = {
firstName: ['John', 'Mike'],
lastName: ['Doe', 'Smith']
};
const ppl = Object
.entries(srcData)
.reduce((acc, [key, values]) => {
values.forEach((val, i) => {
if (i >= acc.length) {
acc.push({});
}
acc[i][key] = val;
});
return acc;
}, []);
console.log(ppl);
说明:
- 使用
Object.entries
将对象转换为键值对数组。 - 使用
.reduce
迭代构建结果数组。 - 使用
.forEach
循环遍历从 (1) 获得的值数组,如果结果为空,则将空对象推送到数组 (push({})
)数组不够长,无法容纳当前值数组中的所有项目
关于javascript - 如何将一个对象内部的值数组分组到另一个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55053381/