javascript - MongoDB/ meteor : Add unique ID to every array element

标签 javascript arrays mongodb meteor

如何为该结构中的每个数组元素添加唯一 ID?元素的数量是可变的,所以我需要一个动态的解决方案。

{
    "_id" : "wLXDvjDvbsxzfxabR",
    "group" : [
        {
            "title" : "title 1",
            "data" : [
                {
                    "note" : "text"
                }
            ]
        },
        {
            "title" : "title 2",
            "data" : [
                {
                    "note 1" : "text"
                },
                {
                    "note 2" : "text"
                },
                {
                    "note 3" : "text"
                }
            ]
        }
    ]
}

ID 应添加到所有组元素和所有数据元素。结果应如下所示:

{
    "_id" : "wLXDvjDvbsxzfxabR",
    "group" : [
        {
            "id" : "dfDFSfdsFDSfdsFws",
            "title" : "title 1",
            "data" : [
                {
                    "id" : "efBDEWVvfdvsvsdvs",
                    "note" : "text"
                }
            ]
        },
        {
            "id" : "fdsfsFDSFdsfFdsFd",
            "title" : "title 2",
            "data" : [
                {
                    "id" : "WVvfsvVFSDWVDSVsv",
                    "note 1" : "text"
                },
                {
                    "id" : "qqdWSdksFVfSVSSCD",
                    "note 2" : "text"
                },
                {
                    "id" : "MZgsdgtscdvdsRsds",
                    "note 3" : "text"
                }
            ]
        }
    ]
}

最佳答案

这应该遍历对象

function generateId() {
    // you'll have to write this yourself
}

function addId(obj) {
    if (Object.prototype.toString.call(obj).indexOf('Array') >= 0) {
        obj.forEach(function(item) {
            item.id = item.id || generateId();
            addId(item);
        });
    }
    else if (typeof obj == 'object') {
        Object.keys(obj).forEach(function(key) {
            addId(obj[key]);
        });
    }
}

用法

addId(yourObject);

关于javascript - MongoDB/ meteor : Add unique ID to every array element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690378/

相关文章:

javascript - 如何创建一年中每天增加 1/365 部分的圆轮廓?

javascript - 按单个按钮播放随机声音

node.js - Mongoose 选择 : false not working on location nested object

javascript - 单击按钮创建表时获取值复选框

python - 如何在 Tkinter 中将二维数组从一个类传递到另一个类?

c - 如何在 C 中将 char 数组 case [0] 和 [1] 连接到 char 指针?

javascript - 如何从对象中检索数组

javascript - MongoDB 无法连接到 Mac OS X 上的 127.0.0.1

javascript - 如何在 Mongo Map/Reduce 发出中使用范围变量作为属性名称

javascript - 需要组合 jQuery 函数的帮助