2012-06-12 51 views
-1

我遇到問題。我想有一個靜態字典javascript多行字典聲明

var myDict={"aaa":true,"aab":false,"aac":false,"aad":true, [...] }; 

有很多項目,我想有一個輕鬆訪問所有的人都在的情況下,我需要改變自己的價值。因此,我不喜歡單線聲明。

作爲替代,我還是設法做到以下幾點,因爲多行文本被允許在Javascript:

var dict = {}; 
var loadDict = function() { 

    text = "aaa,true\n\ 
aab,false\n\ 
aac,false\n\ 
aad,true\n\[...]"; 

    var words = text.split("\n"); 
    for (var i = 0; i < words.length; i++) { 
     var pair = words[i].split(","); 
     dict[ pair[0].trim() ] = pair[1].trim(); 
    } 
} 

是否有具有一個多行聲明的更好/更優雅的方式字典?

說明:Creating multiline strings in JavaScript是一個僅適用於字符串的解決方案。它不適用於字典。

編輯:我在每行的末尾添加了一個'\'。這是問題。謝謝。

回答

3
var myDict = { 
    "aaa": true, 
    "aab": false, 
    "aac": false, 
    "aad": true, 
    [...] 
}; 

我希望這是你的意思,因爲它是基本的Javascript語法。

另外,如果由於某種原因,你想「存儲」簡單對象(由字符串,數字,布爾值,數組或上述實體的對象)轉換爲字符串,可以考慮JSON:

var myDictJSON = '{\ 
    "aaa": true,\ 
    "aab": false,\ 
    "aac": false,\ 
    "aad": true,\ 
    [...] 
}'; 
var myDict = JSON.parse(myDictJSON); 

支持JSON適用於所有主流瀏覽器,包括自版本8以來的IE瀏覽器。對於其他瀏覽器,這種通用庫json2.js可以實現這一點。

您還可以使用JSON.stringify將簡單對象轉換爲字符串。

+0

謝謝。 我在每行的末尾添加了\,這就是破壞我的代碼的原因。 – iliaden

0

這(同時含有 「串」 和 「布爾」 一個複雜的數據結構):

var myDict={"aaa":true,"aab":false,"aac":false,"aad":true, [...] }; 

可表現這樣的:

var myDict={ 
    "aaa":true, 
    "aab":false, 
    "aac":false, 
    "aad":true, 
    [...] 
}; 

類似地,這樣的:

var myBigHairyString = "Supercalifragilsticexpialidocious"; 

可表示如下:

var myBigHairyString = 
    "Super" + 
    "califragilstic" + 
    "expialidocious"; 
+0

像這樣的字符串分割對於代碼縮進來說可能很好,但速度較慢,因爲對字符串的JS操作實際上是執行的。 – MaxArt

1

這是瞭解快速

var myDict={ 
    "aaa":true, 
    "aab":false, 
    "aac":false, 
    "aad":true 
}; 

請記住,不要放置大括號中的下一行。

我喜歡迴應。請回復