获取所有的逗号分隔字符串值在Javascript
我在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
你可以请尝试以下操作:
// 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
有点含糊,在将来的这些命名中甚至可能会让你不知所措,更不用说其他读者了。
非常感谢。你是一个生活品味它的作品。 – 2015-02-07 09:22:51
@JohnSmith欢迎你!我很高兴我的帮助。 – Christos 2015-02-07 09:23:12
只是好奇地问我们可以让这个程序是通用的,我的意思是任何数量的变量它的工作原理? – 2015-02-07 09:24:09
您还可以将会话数据存储在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.
}
]
你也可以使用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);
可以等待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