在将数组转换为对象时,我知道扩展运算符和 Object.assign() 等选项,但是,我很难弄清楚如何以我需要的格式格式化最终对象。
我原来的数组是这样的:
let propsArray = [ { id: '1' },
{ 'name.first': 'john' },
{ 'name.last': 'smith' } ]
我想从此数据中得到的对象需要如下所示:
{
"id" : 1,
"name" : {
"first" : "john",
"last" : "smith"
}
}
到目前为止,我已经尝试使用 object.assign(),最终在结果对象中添加数字作为属性键,这显然不是我想要的:
let finalObj = Object.assign({}, propsArray);
我怎样才能得到我在这里需要的格式的结果对象?
最佳答案
您需要更深入地查看对象并获取拆分键并通过获取具有属性的对象或空对象来减少它们。最后赋值。
var data = [{ id: '1' }, { 'name.first': 'john' }, { 'name.last': 'smith' }],
result = data.reduce((r, o) => {
Object.entries(o).forEach(([k, v]) => {
var keys = k.split('.'),
last = keys.pop();
keys.reduce((q, k) => q[k] = q[k] || {}, r)[last] = v;
});
return r;
}, {});
console.log(result);
关于javascript - 从数组转换为正确的对象格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56977767/