gpt4 book ai didi

javascript - 重构 JavaScript 对象的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-29 22:11:39 27 4
gpt4 key购买 nike

我正在用 javascript 重构一个对象以变成一个平面对象:

{
'we' : 'are',
'the' : 'knights',
'who' : 'say',
'ni' : '!!!'
}

进入一个对象,其中以前在平面对象中的一些项目包含在原始平面对象的子对象中:

{
'we' : 'are',
'the' : 'knights',
'shrubbery' : {
'who' : 'say',
'ni' : '!!!'
}
}

我可以通过引用然后删除来进行重组,如下所示:

var knights = {
'we' : 'are',
'the' : 'knights',
'who' : 'say',
'ni' : '!!!'
};

knights.shrubbery = {'who':knights.who,
'ni':knights.ni};

delete knights.who;
delete knights.ni;

但这似乎不够优雅。是否有更好的方法将一个对象的属性移动到另一个对象或以其他方式将一个对象的属性捆绑到该对象的子对象中?

最终,我想要做的是将一个平面对象形成一个数据树,其中根对象可以包含组,组又包含子组等等。像这样转动:

{'leaf1':'',
'leaf2':'',
'leaf3':'',
'leaf4':'',
'leaf5':'',
'leaf6':'',
'leaf7':'',
'leaf8':'',
'leaf9':''
}

进入这个:

{'leaf1':'',
'leaf2':'',
'leaf3':'',
'groups' : [
{
'leaf1':''
},{
'leaf1':'',
'leaf2':'',
'groups':[
{
'leaf7':'',
'leaf8':'',
'leaf9':''
}
]
}
]
}

最佳答案

我认为您当前的方法没有任何问题,但为了使其更具可扩展性,您可以将其包装在一个函数中:

function restructure(obj, new_child, properties) {
obj[new_child] = {};
for (var i = 0; i < properties.length; i++) {
obj[new_child][properties[i]] = obj[properties[i]];
delete obj[properties[i]];
}
}

restructure(knights, 'shrubbery', ['who', 'ni']);

关于javascript - 重构 JavaScript 对象的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17839845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com