2014-03-04 60 views
1

替代我有這需要在格式從一個字符串中刪除報價/串

 ctrlOptions:{0:'String',1:'int'} 

除了簡單數據類型我有用戶定義的數據類型,因此,我想填充此dynamicaly的選項下拉元件。所以我用一個循環,並級聯

var dropDown = "{" 
for(var i=0;i<dataTypesList.length;i++){ 
if(i == dataTypesList.length-1){ 
    dropDown = dropDown + i + ":" + "'" + dataTypesList[i].Name + "'}"; 
}else{ 
    dropDown = dropDown + i + ":" + "'" + dataTypesList[i].Name+ "'" + ","; 
}} 

這產生在要求的格式,但隨着周圍的引號的選項等

ctrlOptions:「{0:‘字符串’,1:‘INT’}」

我想刪除我試過的雙引號替換它dient似乎幫助。我怎麼能達到這個我可以用任何其他方式。

回答

0

可以使用JSON.parse的選項字符串從JSON字符串轉換成JSON對象:

使用你的代碼(略有修改):

var dropDown = "{" 
for(var i = 0; i < dataTypesList.length; i++) 
{ 
if(i === dataTypesList.length - 1) 
{ 
    dropDown += i + ":'" + dataTypesList[i].Name + "'}"; 
} 
    else 
{ 
    dropDown += i + ":'" + dataTypesList[i].Name + "',"; 
} 
} 


// later... 
ctrlOptions: JSON.parse(dropDown); 

驗證你的目標瀏覽器兼容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

如果不是這樣,那麼有些庫與舊版瀏覽器兼容,它們可以完成相同的功能。 JSON2被作者推薦用於過時瀏覽器:https://github.com/douglascrockford/JSON-js

1

你想創建的是一個對象&不是一個字符串。

從您的代碼,以便瘋狂猜測,該輸入dataTypesList看起來是這樣的:

dataTypesList = [{Name:'String'}, {Name:'int'}] 

你應該使用:

var dropDown = {}; 

for(var i=0;i<dataTypesList.length;i++) 

    dropDown[i] = dataTypesList[i].Name; 

並輸出是一個對象:

{0: "String", 1: "int"}