Ade*_*emo 2 javascript arrays object
在将数组转换为对象时,我知道诸如spread运算符和Object.assign()之类的选项,但是,我很难弄清楚如何将最终对象格式化为所需的格式。
我的原始数组如下所示:
let propsArray = [ { id: '1' },
{ 'name.first': 'john' },
{ 'name.last': 'smith' } ]
Run Code Online (Sandbox Code Playgroud)
我要从此数据中获取的对象应如下所示:
{
"id" : 1,
"name" : {
"first" : "john",
"last" : "smith"
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试使用object.assign()进行的操作最终在结果对象中添加了数字作为属性键,这显然不是我想要的:
let finalObj = Object.assign({}, propsArray);
Run Code Online (Sandbox Code Playgroud)
我如何才能将生成的对象格式化为所需的格式?
您需要更深入地了解该对象,并通过使用具有属性的对象或空对象来获取分割后的键并减少它们。最后分配值。
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);Run Code Online (Sandbox Code Playgroud)