2013-04-11 65 views
0

需要幫助。 我有字符串等["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"](無限數量的對)將字符串切片並將其存儲在新陣列中

我需要與一對的陣列等wT(作爲索引),並WLw作爲值,整個字符串(或更簡單的wT作爲位於index0,WLw作爲索引1等等) 我想在JavaScript中做到這一點,但我不知道如何完成這項任務。

非常感謝您的幫助!

+3

你的字符串包含'[]'外括號嗎?如果是這樣,首先調用'JSON.parse()'獲得一個數組,然後''.split()''=' – 2013-04-11 13:02:24

+0

上的每個元素。使用JSON.parse()並從我的字符串中獲得每個字符的數組。這有什麼用? – aleXela 2013-04-11 13:06:22

+0

什麼是您的_exact原始字符串_包括其外部引號?如果它包含'[]',那麼'JSON.parse('[「wt = WLw」,「V5 = 9jCs」,「7W = 71X」,「rZ = HRP9」]')'返回一個key =值對然後可以是'.split()'。 – 2013-04-11 13:11:36

回答

3

你不能有一個字符串作爲數組中的索引,你想要的是一個對象。

所有你需要做的就是循環你的數組,將每個值分成2項(鍵和值),然後將它們添加到一個對象。

實施例:

// output is an object 
var output = {}; 
var source = ["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"]; 
for (var index = 0; index < source.length; index++) { 
    var kvpair = source[index].split("="); 
    output[kvpair[0]] = kvpair[1]; 
} 

如果你想數組的數組,則其幾乎相同的過程,只是推動每一對到輸出對象

// output is a multidimensional array 
var output = []; 
var source = ["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"]; 
for (var index = 0; index < source.length; index++) { 
    output.push(source[index].split("=")); 
} 

更新如果源是實際上是一個字符串,而不是一個數組,然後你將不得不做更多的分裂來使它工作

var output = {}; 
var sourceText = "[\"wt=WLw\",\"V5=9jCs\",\"7W=71X\",\"rZ=HRP9\"]"; 
// i have escaped the quotes in the above line purely to make my example work! 
var source = sourceText.replace(/[\[\]]/g,"").split(","); 
for (var index = 0; index < source.length; index++) { 
    var kvpair = source[index].split("="); 
    output[kvpair[0]] = kvpair[1]; 
} 

更新2

如果您想要的輸出是一個數組的數組,而不是包含鍵值對,那麼你就需要做一些像@limelights答案的對象。

對象與鍵值對:var myObject = { "key1": "value1", "key2": "value2" };

與上面的代碼可以訪問「值1」這樣myObject["key1"]myObject.key1

數組的數組:var myArray = [ [ "key1", "value1"] ,[ "key2", "value2" ] ];

與此代碼,你不能通過「鑰匙」訪問數據(沒有循環遍歷整個地段以便首先找到它)。在這種形式下,「key1」和「value1」實際上都是值。

得到「VALUE1」你會做myArray[0][1]或者你可以使用一箇中介數組訪問對:

var pair = myArray[0]; 
> pair == ["key1", "value1"] 
> pair[0] == "key1" 
> pair[1] == "value1" 

你可以在這兩種類型的結果的使用for each循環

// array of arrays 
var data = [ [ "hello", "world"], ["goodbye", "world"]]; 

data.forEach(function(item) { 
    console.log(item[0]+" "+item[1]); 
}); 
> Hello World 
> Goodbye World 

// object (this one might not work very well though) 
var data = { "hello": "world", "goodbye": "world" }; 

Object.keys(data).forEach(function(key) { 
    console.log(key+" "+data[key]); 
}); 
> Hello World 
> Goodbye World 
+0

事情是我想運行槽數組使用foreach進行操作與數據。 – aleXela 2013-04-11 13:26:49

+0

在更新中您添加了,我不能放斜槓。我像之前寫的那樣得到了字符串。 – aleXela 2013-04-11 13:27:30

+0

我可以使用'output = []'而不是'output = {}'嗎? – aleXela 2013-04-11 13:36:21

2

正常的for loop會在這裏完美!

var list = ["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"]; 
var pairs = []; 
for(var i = 0; i < list.length; i++){ 
    pairs.push(list[i].split('=')); 
} 

這會給你一個對的數組,我假設你想要的。 否則只是擺脫外部陣列,並做list[i].split('=');

如果你想它把對象,即。不是陣列

var pairObject = {}; 
for(var i = 0; i < list.length; i++){ 
    var pair = list[i].split('='); 
    pairObject[pair[0]] = pair[1]; 
} 
+0

此時我更喜歡數組。但是對這兩種變體都表示感謝 – aleXela 2013-04-11 13:28:16

相關問題