如何将字符串转换为JavaScript数组?
看看代码:
var string = "0,1"; var array = [string]; alert(array[0]);
在这种情况下,alert显示0,1。如果它是一个数组,它将显示0。如果调用alert(array[1]),它应该弹出1
alert
0,1
0
alert(array[1])
1
是否有机会将这样的字符串转换为JavaScript数组?
分裂它在,字符上;
,
var string = "0,1"; var array = string.split(","); alert(array[0]);
对于这样的简单数组成员,可以使用JSON.parse。
JSON.parse
var array = JSON.parse("[" + string + "]");
这给了你一个数字数组。
[0, 1]
如果你使用.split(),你将得到一个字符串数组。
.split()
["0", "1"]
只要注意JSON.parse将限制你支持的数据类型。如果你需要像undefined或函数这样的值,你需要使用eval()或JavaScript解析器。
undefined
eval()
如果你想使用.split(),但你也想要一个数字数组,你可以使用Array.prototype.map,尽管你需要为IE8和更低的版本替换它,或者只是编写一个传统的循环。
Array.prototype.map
var array = string.split(",").map(Number);
你可以使用split
split
"0,1".split(',')
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/
- 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()中,将元素转换为整数类型。
split('')
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的示例:
Array.filter
var str = 'a,b,hi,ma,n,yu'; var strArr = Array.prototype.filter.call(str, eachChar => eachChar !== ',');
如何将逗号分隔的字符串转换为JavaScript数组?< / >
var string = 'hello, world, test, test2, rummy, words'; var arr = string.split(', '); // split string on comma space console.log( arr ); //Output ["hello", "world", "test", "test2", "rummy", "words"]
在javascript中使用以下方式转换字符串到数组的更多示例:
Split() - No Separator:
Split() -空字符串分隔符:
Split() -开始/结束分隔符:
正则表达式分隔符:
Split() with Limit参数
查看这个链接 = =比;https://www.tutsmake.com/javascript-convert-string-to-array-javascript/ < / p >
你可以使用javascript 传播的语法将字符串转换为数组。在下面的解决方案中,我删除了逗号,然后将字符串转换为数组。
var string = "0,1" var array = [...string.replace(',', '')] console.log(array[0])
作为split更强大的替代方案,你可以使用match
match
"0,1".match(/\d+/g)
let a = "0,1".match(/\d+/g) console.log(a);