Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从javascript中的字符串构建数组?_Javascript - Fatal编程技术网

如何从javascript中的字符串构建数组?

如何从javascript中的字符串构建数组?,javascript,Javascript,我试图从一个看起来像这样的刺中获取一些值: W1:0.687268668116, URML:0.126432054521, MH:0.125022031608, W2:0.017801539275, S3:0.00869514129605, PC1:0.00616885024382, S5L:0.0058163445156, RM1L:0.00540508783268, C2L:0.00534633687797, S4L:0.00475882733094, S2L:0.0034663063274

我试图从一个看起来像这样的刺中获取一些值:

W1:0.687268668116, URML:0.126432054521, MH:0.125022031608, W2:0.017801539275, S3:0.00869514129605, PC1:0.00616885024382, S5L:0.0058163445156, RM1L:0.00540508783268, C2L:0.00534633687797, S4L:0.00475882733094, S2L:0.00346630632748
我想创建一个包含所有键的数组和另一个包含所有值的数组,即
[W1,URML,MH…]和[0.687268668116,0.126432054521…]
我有一段代码可以实现这一点,但只针对第一个值:

var foo = str.substring(str.indexOf(":") + 1);

这将为您提供
数组

var keys   = str.match(/\w+(?=:)/g),
    values = str.match(/[\d.]+(?=,|$)/g);
正则表达式可视化

/\w+(?=:)/g

/[\d.]+(?=,|$)/g


和另一个不使用regexp的解决方案

var pairs  = str.split(" "),
    keys   = pairs.map(function(e) { return e.split(":")[0]; }),
    values = pairs.map(function(e) { return e.split(":")[1]; });
使用
split()

此处演示:


forEach()
(即<9):

var-keys=[];
var值=[];
变量对=str.split(',');
for(变量i=0,n=pairs.length;i
将字符串解析为数组

var str = "W1:0.687268668116, URML:0.126432054521, MH:0.125022031608, W2:0.017801539275";

var tokens = str.split(",");

var values = tokens.map(function (d) {
    var i = d.indexOf(":");
    return +d.substr(i + 1);
});

var keys = tokens.map(function (d) {
    var i = d.indexOf(":");
    return d.substr(0, i);
});

console.log(values);
console.log(keys);
这是演示

var str=“W1:0.687268668116,URML:0.126432054521,MH:0.125022031608,W2:0.017801539275,S3:0.00869514129605,PC1:0.00616885024382,S5L:0.005816344556,RM1L:0.00540508783268,C2L:0.00534633687797,S4L:0.00475882733094,S2466332748”;
var all=str.split(“,”),
arrayOne=[],
arrayTwo=[];
对于(变量i=0;i
str.split(“”.map(function(elem){return elem.split(“”):“”[1]};这是一个很好的实现,但请注意,forEach仅在支持ECMAScript 5的浏览器中实现,因此您需要为IE8和更早版本安装一个垫片,因为IE8和更早版本仍然是大部分internet用户。
var keys = [];
var values = [];
var pairs = str.split(', ');

for (var i = 0, n = pairs.length; i < n; i++) {
  var pair = pairs[i].split(':');
  keys.push(pair[0]);
  values.push(pair[1]);
};
var str = "W1:0.687268668116, URML:0.126432054521, MH:0.125022031608, W2:0.017801539275";

var tokens = str.split(",");

var values = tokens.map(function (d) {
    var i = d.indexOf(":");
    return +d.substr(i + 1);
});

var keys = tokens.map(function (d) {
    var i = d.indexOf(":");
    return d.substr(0, i);
});

console.log(values);
console.log(keys);
var str = "W1:0.687268668116, URML:0.126432054521, MH:0.125022031608, W2:0.017801539275, S3:0.00869514129605, PC1:0.00616885024382, S5L:0.0058163445156, RM1L:0.00540508783268, C2L:0.00534633687797, S4L:0.00475882733094, S2L:0.00346630632748";

var all = str.split(","),
    arrayOne = [],
    arrayTwo = [];

for (var i = 0; i < all.length; i++) {
    arrayOne.push(all[i].split(':')[0]);  
    arrayTwo.push(all[i].split(':')[1]);
}