gpt4 book ai didi

javascript - 更改嵌套对象的父子相关 ID

转载 作者:行者123 更新时间:2023-12-02 14:38:07 25 4
gpt4 key购买 nike

我有以下对象数组

{
id: 'a',
parent_id: 'root'
}

{
id: 'a1',
parent_id: 'a'
}

{
id: 'a11',
parent_id: 'a1'
}
{
id: 'a12',
parent_id: 'a1'
}
{
id: 'a13',
parent_id: 'a1'
}
.
.
.
.
.

{
id: 'a2',
parent_id: 'a'
}

{
id: 'a21',
parent_id: 'a2'
}
{
id: 'a22',
parent_id: 'a2'
}
{
id: 'a23',
parent_id: 'a2'
}
.
.
.
.
.

我有一个 id 为 a 的根元素,并且它有多个子元素(子元素使用 parent_id 属性保存)

我在 mongodb 中以相同的格式保存。我想与其他用户共享相同的记录,

我的数据模型需要这些 Id 是唯一的,所以我只想将这些对象数组复制到一个单独的 var 中,并将这些 id 更改为维护父子关系的随机字符串。

我可以使用Random.id()从其中一个库生成随机字符串,现在我不知道如何循环所有子项并更改idparent_id 属性,感谢您的帮助。

谢谢。

最佳答案

我想这可能就是你想要的;

function  makeUniqueId(){
var id = "",
charList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
numList = "0123456789";
for( var i=0; i < 2; i++ ) id += charList.charAt(Math.floor(Math.random() * charList.length));
for( var j=0; j < 3; j++ ) id += numList.charAt(Math.floor(Math.random() * 10));
return !~uil.indexOf(id) ? (uil.push(id),id) : makeId();
}
var uil = [], // unique id list
data = [
{
id: 'a',
parent_id: 'root'
},{
id: 'a1',
parent_id: 'a'
},{
id: 'a11',
parent_id: 'a1'
},{
id: 'a12',
parent_id: 'a1'
},{
id: 'a13',
parent_id: 'a1'
},{
id: 'a2',
parent_id: 'a'
},{
id: 'a21',
parent_id: 'a2'
},{
id: 'a22',
parent_id: 'a2'
},{
id: 'a23',
parent_id: 'a2'
}];

data.forEach((e,i,a) => {var puid = makeUniqueId();
a.forEach(f => f.parent_id == e.id && (f.parent_id = puid));
e.id = puid;
});
document.write("<pre>" + JSON.stringify(data,null,2) + "</pre>");

每次运行代码时,您都会获得 idparent_id 字段不同的唯一值。如果您想让这个嵌套,那就完全是另一回事了。

关于javascript - 更改嵌套对象的父子相关 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262265/

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