2015-02-07 92 views
1

我在JavaScript中有1個字符串變量,它包含如下3個逗號分隔值:獲取所有的逗號分隔字符串值在Javascript

var session = "[email protected],123456,f_id=8"; 

我想在3個不同的變量,所有上述3個逗號分隔值。到目前爲止,我所取得的成果是在elem2變量中獲取最後一個逗號分隔值,並在elem1變量中獲得其他兩個逗號分隔值1st和2nd。

var elem1 = session.split(","); 

var elem2 = elem1.pop(); 

document.write("elem1 = "+elem1+"<br/>elem2 = "+elem2); 

所以我的計劃是行不通的,因爲我想罰款,請我需要快速有效的解決方案,使我有另一個變量elem3,我會得到以下在我的瀏覽器輸出:

elem1 = [email protected] 
elem2 = 123456 
elem3 = f_id=8 
+0

可以等待ES6,可以做[解構分配](HTTPS://developer.mozilla。 org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)如下:'var [email,number,id] = session.split(「,」)' – Grundy 2015-02-07 09:23:07

回答

5

你可以請嘗試以下操作:

// Initially, we split are comma separated string value on commas. 
// In the values an array of these values is stored. 
var values = session.split(","); 
// Then we get each value based on it's position in the array. 
var email = values[0]; 
var number = values[1]; 
var id = values[2]; 

作爲一個方面說明,我建議您爲上述變量使用有意義的名稱。名稱爲elem1,elem2elem3有點含糊,在將來的這些命名中甚至可能會讓你不知所措,更不用說其他讀者了。

+0

非常感謝。你是一個生活品味它的作品。 – 2015-02-07 09:22:51

+0

@JohnSmith歡迎你!我很高興我的幫助。 – Christos 2015-02-07 09:23:12

+0

只是好奇地問我們可以讓這個程序是通用的,我的意思是任何數量的變量它的工作原理? – 2015-02-07 09:24:09

0

您還可以將會話數據存儲在JavaScript Object中。下面遍歷每個拆分字符串並將其添加到一個對象。

var myData = {}; 

// ... 

for(var i = 0, x = session.split(","); i < x.length; i++) { 
    switch(i) { 
     case 0: myData.email = x[i]; break; 
     case 1: myData.number = x[i]; break; 
     case 2: myData.f_id = x[i]; break; 
    } 
} 

如果你正在處理多個數據值,最好是創建一個對象數組,如下所示。

依此類推。這是JSON Notation的一種形式。輸出看起來像這樣:

[ 
    { 
     email: "[email protected]", 
     number: "123456", 
     f_id: "f_id=8" 
    }, 
    { 
     // Another session, etc. 
    } 
] 
0

你也可以使用string.replace和一個回調作爲參數。非常靈活!

檢查這個以瞭解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

爲了您的用例,你可能會結束:

function writeParts(match, email, number, id, offset, string) { 
    document.write("email = "+email+"<br/>number = "+number); 
} 
// match not-comma followed by a comma (three times) 
session.replace(/([^,]+),([^,]+),([^,]+)/, writeParts); 
相關問題