将带逗号的字符串转换为数组

如何将字符串转换为JavaScript数组?

看看代码:

var string = "0,1";
var array = [string];
alert(array[0]);

在这种情况下,alert显示0,1。如果它是一个数组,它将显示0。如果调用alert(array[1]),它应该弹出1

是否有机会将这样的字符串转换为JavaScript数组?

1298006 次浏览

分裂它在,字符上;

var string = "0,1";
var array = string.split(",");
alert(array[0]);

对于这样的简单数组成员,可以使用JSON.parse

var array = JSON.parse("[" + string + "]");

这给了你一个数字数组。

[0, 1]

如果你使用.split(),你将得到一个字符串数组。

["0", "1"]

只要注意JSON.parse将限制你支持的数据类型。如果你需要像undefined或函数这样的值,你需要使用eval()或JavaScript解析器。


如果你想使用.split(),但你也想要一个数字数组,你可以使用Array.prototype.map,尽管你需要为IE8和更低的版本替换它,或者只是编写一个传统的循环。

var array = string.split(",").map(Number);

你可以使用split

< p >参考: http://www.w3schools.com/jsref/jsref_split.asp < / p >

"0,1".split(',')

对于这样的简单数组成员,可以使用JSON.parse。

var listValues = "[{\"ComplianceTaskID\":75305,\"RequirementTypeID\":4,\"MissedRequirement\":\"Initial Photo Upload NRP\",\"TimeOverdueInMinutes\":null}]";


var array = JSON.parse("[" + listValues + "]");

这给了你一个数字数组。

现在你的变量值是array。length=1

值输出

array[0].ComplianceTaskID
array[0].RequirementTypeID
array[0].MissedRequirement
array[0].TimeOverdueInMinutes

使用内置的map函数和匿名函数,如下所示:

string.split(',').map(function(n) {return Number(n);});

[编辑]下面是你如何使用它

var string = "0,1";
var array = string.split(',').map(function(n) {
return Number(n);
});
alert( array[0] );

如果字符串已经是列表格式,你可以使用JSON.parse:

var a = "['a', 'b', 'c']";
a = a.replace(/'/g, '"');
a = JSON.parse(a);

转换所有类型的字符串

var array = (new Function("return [" + str+ "];")());






var string = "0,1";


var objectstring = '{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"}';


var stringArray = (new Function("return [" + string+ "];")());


var objectStringArray = (new Function("return [" + objectstring+ "];")());

JSFiddle https://jsfiddle.net/7ne9L4Lj/1/

控制台结果

enter image description here

一些练习不支持对象字符串

- JSON.parse("[" + string + "]"); // throw error


- string.split(",")
// unexpected result
["{Name:"Tshirt"", " CatGroupName:"Clothes"", " Gender:"male-female"}", "      {Name:"Dress"", " CatGroupName:"Clothes"", " Gender:"female"}", " {Name:"Belt"",    " CatGroupName:"Leather"", " Gender:"child"}"]

这在ES6中很容易实现;

可以使用Array.from(字符串)将字符串转换为数组;

Array.from("01")

将console.log

['0', '1']

这正是你想要的。

为什么不像这样替换,逗号和split('')字符串,这将导致['0', '1'],此外,你可以将结果包装到parseInt()中,将元素转换为整数类型。

it('convert string to array', function () {
expect('0,1'.replace(',', '').split('')).toEqual(['0','1'])
});

ES6的另一个选项是使用传播语法。

var convertedArray = [..."01234"];

var stringToConvert = "012";
var convertedArray  = [...stringToConvert];
console.log(convertedArray);

我删除字符'[',']'并使用','进行拆分

let array = stringObject.replace('[','').replace(']','').split(",").map(String);

var i = "[{a:1,b:2}]",
j = i.replace(/([a-zA-Z0-9]+?):/g, '"$1":').replace(/'/g,'"'),
k = JSON.parse(j);


console.log(k)

// =>声明正则表达式

(a-zA-Z0-9) =>匹配所有a-z, a-z, 0-9

(): =>组所有匹配的元素

1美元 =>替换字符串指正则表达式中的第一个匹配组。

g =>全局标志

Split(",")可以将带有逗号的字符串转换为字符串数组,这是我的代码片段。

    var input ='Hybrid App, Phone-Gap, Apache Cordova, HTML5, JavaScript, BootStrap, JQuery, CSS3, Android Wear API'
var output = input.split(",");
console.log(output);

["混合应用程序"," Phone-Gap", " Apache Cordova", " HTML5", " JavaScript", " BootStrap", " JQuery", " CSS3", " Android Wear API"]

下面是更多“自己试试”的例子。

定义和用法 split()方法用于将字符串拆分为子字符串数组,并返回新数组

提示:如果使用空字符串(“”)作为分隔符,则字符串在每个字符之间被分割。

注意:split()方法不会改变原始字符串。

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

使用Array.filter的示例:

var str = 'a,b,hi,ma,n,yu';


var strArr = Array.prototype.filter.call(str, eachChar => eachChar !== ',');

你可以使用javascript 传播的语法将字符串转换为数组。在下面的解决方案中,我删除了逗号,然后将字符串转换为数组。

var string = "0,1"
var array = [...string.replace(',', '')]
console.log(array[0])

正则表达式

作为split更强大的替代方案,你可以使用match

"0,1".match(/\d+/g)

let a = "0,1".match(/\d+/g)


console.log(a);