我在JavaScript中有1个字符串变量,其中包含3个逗号分隔值,如下所示:
var session = "mick@yahoo.com,123456,f_id=8";
我希望在3个不同的变量中得到以上3个逗号分隔值。到目前为止我所获得的是在elem2变量中获取最后一个逗号分隔值,并在elem1变量中获得其他2个逗号分隔值1st和2nd。
var elem1 = session.split(",");
var elem2 = elem1.pop();
document.write("elem1 = "+elem1+"<br/>elem2 = "+elem2);
所以我的程序运行不正常,我需要快速工作的解决方案,以便我有另一个变量elem3,我将在浏览器中获得以下输出:
elem1 = mick@yahoo.com
elem2 = 123456
elem3 = f_id=8
答案 0 :(得分: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
,elem2
和elem3
有点含糊不清,将来这些名称甚至可能会让您感到模糊,更不用说您的代码的其他读者了。
答案 1 :(得分:0)
您还可以将会话数据存储在JavaScript Object中。下面遍历每个拆分字符串并将其添加到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;
}
}
如果您正在处理多个数据值,最好制作一个对象数组,如上所述。
var myData = [];
// ...
myData.push({
email: x[0],
number: x[1],
f_id: x[2]
});
等等。这是JSON Notation的一种形式。输出看起来像这样:
[
{
email: "mick@yahoo.com",
number: "123456",
f_id: "f_id=8"
},
{
// Another session, etc.
}
]
答案 2 :(得分: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);