Javascript 如何使用纯JS更改对象结构
我正在努力改变对象的结构。 我想从以下位置转换对象:Javascript 如何使用纯JS更改对象结构,javascript,javascript-objects,Javascript,Javascript Objects,我正在努力改变对象的结构。 我想从以下位置转换对象: var data = { "a1.img": 'img1', "a1.href": 'href1', "a2.img": 'img2', "a2.href": 'href2', "a3.img": 'img3', "a3.href" : 'href3' }; 为此: var data = { "a1":{ "img": "img1", "href": "href1" }, "a2
var data = {
"a1.img": 'img1',
"a1.href": 'href1',
"a2.img": 'img2',
"a2.href": 'href2',
"a3.img": 'img3',
"a3.href" : 'href3'
};
为此:
var data = {
"a1":{
"img": "img1",
"href": "href1"
},
"a2":{
"img": "img2",
"href": "href2"
},
"a3":{
"img": "img3",
"href": "href3"
}
}
我的解决方案不能正常工作,我不知道如何修复它。我的解决方案:
风险值数据={
a1.img:“img1”,
a1.href:“href1”,
a2.img:“img2”,
a2.href:'href2',
a3.img:“img3”,
a3.href:“href3”
};
var newData={};
用于var键入数据{
newData[key.split'.[0]={};
对于数据中的var i{
newData[key.split'.[0]][i.split'.[1]]=data[key]
}
}
console.lognewData您可以使用Arrayreduce在原始数组上循环,并将属性附加到累加器
风险值数据={
a1.img:“img1”,
a1.href:“href1”,
a2.img:“img2”,
a2.href:'href2',
a3.img:“img3”,
a3.href:“href3”
};
var res=Object.entriesdata.reducea[k,v]=>{
var[key,prop]=k.split';
如果!a[钥匙]{
a[键]={};
}
a[键][prop]=v;
返回a;
}, {};
console.logres;只需将重复目标中的替换为。作为分隔符。谢谢!我找不到类似的解决方案谢谢!您的解决方案看起来非常棒和简单。现在我将一步一步地重复所有的事情,以便完全理解它!我必须学习如何使用reduce方法。这个建议只适用于带单点的字符串。@NinaScholz-是的,这是真的。这是不可伸缩的。这个问题的答案和OP想做的差不多。