2012-01-08 42 views
2

如果這是一項微不足道的任務,我已經表示歉意,而且我也一直在使用Google搜索和搜索某種解決方案的高低,我可以讓我的頭部繞過,但目前爲止沒有骰子。所以,反正....使用Javascript或JQuery將列表轉換爲結構

我有這樣的:

var myList = "key1,value1,key2,value2" 

我想填充一個結構與此字符串,所以我可以這樣引用它:

alert(myList.key1) // displays value1 

的思考?也許有一些方法可以用JQuery的.each()來做到這一點?我嚴重失去了任何一種方式!也許只是因爲它真的很晚,而且我經歷了長時間的停頓之後再次讓自己熟悉JS和JQuery。任何幫助表示讚賞!

+0

看一看[這個問題](http://stackoverflow.com/q/8751034/218196)。你只需要創建數組,這很容易通過'.split()'完成。 – 2012-01-08 09:13:00

回答

5

假設你從來沒有在值逗號,你可以通過使用split開始:

var parts = myList.split(",");// ["key1", "value1", ...] 

從那裏,你可以使用一個簡單的循環:

var obj = {}; 
for (var i = 0; i < parts.length; i+=2) obj[parts[i]] = parts[i + 1]; 

由於this回答指出,你也可以這樣寫循環:

var obj = {}; 
while (parts.length) obj[parts.shift()] = parts.shift(); 

Th是一個很好的寫法,但行爲有所不同:在此循環之後,parts將爲空。

+1

也看看[這個答案](http://stackoverflow.com/a/8751218/990877),它使用['Array.shift()'](https:// developer。)提供了一個非常優雅的優雅解決方案。 mozilla.org/en/JavaScript/Reference/Global_Objects/Array/shift)。 – PPvG 2012-01-08 12:55:17

+0

@PPvG:這是一個整潔的想法。 – 2012-01-08 18:41:07

2

String.replace方法是您的第一選擇,當涉及到字符串解析任務

var myList = "key1,value1,key2,value2" 
var result = {} 

myList.replace(/(\w+),(\w+)/g, function($0, $1, $2) { 
    result[$1] = $2 
})