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

标签 javascript jquery arrays loops object

我有以下对象数组

{
  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/

相关文章:

JavaScript:如何下载文件,然后强制重新加载页面?

c++ double 到字节数组

javascript - html - 将 json 附加到链接的正确方法

Javascript 设置对象选项

php - 未捕获的范围错误: Maximum call stack

javascript - 搜索多个数组以查看是否有任何名称与另一个变量匹配?

Javascript:如何用循环输出多个数组?

javascript - Zend Controller 未从 Jquery/ajax 接收数据

javascript - 如何将 JavaScript 值传递给 JSF EL 和辅助 bean?

带下拉菜单的 JavaScript 和 HTML