簡體   English   中英

如何實現在javascript中設置的唯一鍵值?

[英]How to implement unique key value set in javascript?

我正在尋找一種實現javascript中唯一鍵值集的優雅方法,

我有一個看起來像下面的對象:

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

我想創建將id作為鍵和名稱,類型作為值的數組/集。

該集合必須是唯一的!

結果應該

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

該ID僅應出現一次

有什么建議么?

您所犯的錯誤是您想要擁有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

您可以使用類似這樣的東西:

    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("")
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM