我有以下对象数组
{
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()
从其中一个库生成随机字符串,现在我不知道如何循环所有子项并更改id
和 parent_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>");
每次运行代码时,您都会获得 id
和 parent_id
字段不同的唯一值。如果您想让这个嵌套,那就完全是另一回事了。
关于javascript - 更改嵌套对象的父子相关 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262265/