2014-11-24 69 views
5

JavaScript中是否存在任何種類的C#字典?我有一個應用程序在angularjs中請求來自MVC Web Api的數據,一旦它得到,它會對它進行一些更改。所以數據是一個對象數組,它作爲一個對象字典存儲在MVC Web Api中,但是我在將它傳遞給網絡之前將其轉換爲列表。C#在JavaScript中等效的字典

如果我直接轉換字典以JSON我得到的是這樣的:

array = [ {Id:"1", {Id:"1", Name:"Kevin Shields"}}, 
      {Id:"2", {Id:"2", Name:"Natasha Romanoff"}} 
     ]; 

好對象是稍微複雜一點,但你現在已經有了一個主意。問題是,這種格式更難以操作(我有字母鍵或ID)。那麼是否有任何字典的等價物?這是很簡單的做這樣的事情:

Object o = dictionary["1"]; 

所以,這是事先感謝。

+0

http://stackoverflow.com/questions/368280/javascript-hashmap-equivalent – Habib 2014-11-24 15:18:47

+0

如果您可以假定鍵是唯一的,只需創建一個對象。如果你不能,你需要構造兩個數組 – 2014-11-24 15:20:36

+0

如果你的查找鍵是唯一的字符串(或者很容易轉換爲唯一的字符串),那麼Javascript對象就可以很好地用於存儲和查找與鍵。 – jfriend00 2014-11-24 15:21:11

回答

9

你有兩種選擇真的,雖然兩者本質上做同樣的事情,它可能是值得一讀多一點here,其中談到了關聯數組(字典),如果你想定製的解決方案:

var dictionary = new Array(); 
dictionary['key'] = 'value' 

或者:

var dict = []; 

dict.push({ 
    key: 'key', 
    value: 'value' 
}); 
+0

downvote的任何原因? – ediblecode 2014-11-25 09:37:52

+0

第二個爲我工作!謝謝。 – 2016-08-29 22:56:58

4

是的,它叫做object。對象的鍵和值就像C#字典一樣。鍵總是字符串。

在你的情況下,對象應該是這樣的:

{ 
    "1": { 
     "Id": 1, 
     "Name":" Kevin Shields" 
    }, 
    "2": { 
     "Id": 2, 
     "Name": "Natasha Romanoff" 
    } 
} 

默認ASP.net串行產生難看的JSON。更好的選擇是Json.NET

1

我的實施例:

var dict = new Array(); 
// add a key named id with value 111 
dict.id = 111; 
//change value of id 
dict.id = "blablabla"; 
//another way 
// add a key named name with value "myName" 
dict["name"] = "myName"; 
//and delete 
delete dict.id; 
delete dict["name"] 

//another way 
dict = { 
    id: 111, 
    "name": "myName" 
}; 

//And also another way create associate array 
var myMap = { key: [ value1, value2 ] }; 
3

我知道這個問題有點老,但是在ES2015中有一個叫做map的新數據結構,它與您在C#中使用的字典非常相似。所以,現在你不需要僞造一個對象或者一個數組。

MDN覆蓋它很好。 ES2015 Map