这只是一个例子,我有更多的数据:
var str = "3.0;4.5;5.2;6.6";
var res = str.split(";");
console.log(res);
Run Code Online (Sandbox Code Playgroud)
输出将是一个字符串数组.如何在不通过现有阵列的情况下获得数组?
...没有再次通过现有阵列?
这很棘手.你不能用split,因为split产生一个字符串数组.您可以使用正则表达式在单个传递中执行此操作,自己构建数组:
var rex = /[^;]+/g;
var str = "3.0;4.5;5.2;6.6";
var match;
var res = [];
while ((match = rex.exec(str)) != null) {
res.push(+match[0]);
}
console.log(res);Run Code Online (Sandbox Code Playgroud)
或者实际上,这比必要的开销更大,indexOf而且substring会做:
var str = "3.0;4.5;5.2;6.6";
var start = 0, end;
var res = [];
while ((end = str.indexOf(";", start)) !== -1) {
res.push(+str.substring(start, end));
start = end + 1;
}
if (start < str.length) {
res.push(+str.substring(start));
}
console.log(res);Run Code Online (Sandbox Code Playgroud)
KooiInc的答案用于replace为我们做循环,这很聪明.
也就是说,除非你有一个真正庞大的数组,再次通过数组更简单:
var res = str.split(";").map(entry => +entry);
Run Code Online (Sandbox Code Playgroud)
在上面,我使用一元从字符串转换为数字+.这只是众多方式中的一种,它们有利有弊.我对这个答案中的选项做了简要介绍.
你可以使用map():
var str = "3.0;4.5;5.2;6.6";
var res = str.split(";").map(Number);
console.log(res);Run Code Online (Sandbox Code Playgroud)