【问题标题】:How to implement unique key value set in javascript?如何在javascript中实现唯一键值集?
【发布时间】:2014-07-23 18:00:35
【问题描述】:

我正在寻找优雅的方式来实现在 javascript 中设置的唯一键值,

我有一个如下所示的对象:

{
    "name" : "admin",
    "type" : "users",
    "id" : "53cf50b32508adc39b0cc566"
},
{
    "name" : "admin2",
    "type" : "users",
    "id" : "53cf50b32508adc39b0cc566"
}

我想创建以 id 作为键和名称、类型作为值的数组/集合。

集合必须是唯一的!

结果应该是

array : [53cf50b32508adc39b0cc566 : {"name" : "admin2","type" : "users"}]

id 应该只出现一次

有什么建议吗?

【问题讨论】:

  • @NishanthiGrashia 这不是独一无二的
  • 也许你可以使用 $.now() ?
  • @MuhammetArslan 我在 javascript 中需要它我没有 jquery 我正在使用 angularJs,但它对我有什么帮助?
  • 你的意思是像:var obj = {'53cf50b32508adc39b0cc566':{name: 'admin', type: 'users'}};

标签: javascript


【解决方案1】:

你犯的错误是你想要一个 JavaScript 不允许的数据结构:

array: [53cf50b32508adc39b0cc566 : {"name" : "admin2","type" : "users"}]

上面这行没有意义,会报错。

假设你想通过键访问你的数据,并且你当前的数据在一个数组中,你需要做的就是创建一个新对象,然后遍历解析的 JSON,将每个对象作为一个值添加到一个新的密钥 ID。

var out = {};
for (var i = 0, l = arr.length; i < l; i++) {
  out[arr[i].id] = {
    name: arr[i].name,
    type: arr[i].type
  };
}

DEMO

【讨论】:

  • 好吧,我想要一个迭代 json 并生成此类对象数组的代码,这就是意思,我需要它是唯一的
  • @LiadLivnat 请注意,您应该在第一轮的问题中包含所有相关信息。
  • 谢谢安迪,这正是我所需要的!
【解决方案2】:

你可以使用类似的东西:

    var person = new Object();

var uid = createGuid();

person[uid] = { name : "admin" };


console.log(person);

    function createGuid(){
            var g = "0123456789abcdef".split("");
            var e = [];
            var h;
            for (var f = 0; f < 32; f++) {
                h = Math.floor(Math.random() * 16);
                if (f == 16) {
                    e[f] = g[(h & 3) | 8]
                } else {
                    e[f] = g[h]
                }
            }
            e[12] = "4";
            return e.join("")
        }

【讨论】:

  • 对不起,这不是我的意思,我需要一个唯一列表,而不是 guid,而是检查现有数组并从中创建唯一列表。
  • var a = [],person = new Object(); person = { name : "admin",type:"admin",id:"545421fdsfvdb" }; var id = person.id; a[id] = []; delete person.id a[id].push(person); console.log(a) ; 是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多