用逗号将string转换为数组
如何将string转换为JavaScript数组?
看代码:
var string = "0,1"; var array = [string]; alert(array[0]);
在这种情况下, alert
会popup一个0,1
。 当它是一个数组的时候,会popup一个0
,当alert(array[1]);
被称为,它应该popup的1
。
有没有机会将这样的string转换成JavaScript数组?
对于这样简单的数组成员,可以使用JSON.parse
。
var array = JSON.parse("[" + string + "]");
这给你一个数组的数组。
[0, 1]
如果你使用.split()
,你会得到一个string数组。
["0", "1"]
请注意, JSON.parse
会将您限制为受支持的数据types。 如果您需要undefined
或函数的值,则需要使用eval()
或JavaScriptparsing器。
如果你想使用.split()
,但你也想要一个数组数组,你可以使用Array.prototype.map
,尽pipe你需要为它IE8和更低或只是写一个传统的循环。
var array = string.split(",").map(Number);
把它拆分成字符;
var string = "0,1"; var array = string.split(","); alert(array[0]);
这在ES6中很容易实现;
您可以使用Array.from('string')将string转换为数组。
Array.from("01")
将console.log
['0', '1']
这正是你要找的。
如果string已经是列表格式,那么可以使用JSON.parse:
var a = "['a', 'b', 'c']"; a = a.replace(/'/g, '"'); a = JSON.parse(a);
对于这样简单的数组成员,可以使用JSON.parse。
var listValues = "[{\"ComplianceTaskID\":75305,\"RequirementTypeID\":4,\"MissedRequirement\":\"Initial Photo Upload NRP\",\"TimeOverdueInMinutes\":null}]"; var array = JSON.parse("[" + listValues + "]");
这给你一个数组的数组。
现在你的variables值就像array.length = 1
价值输出
array[0].ComplianceTaskID array[0].RequirementTypeID array[0].MissedRequirement array[0].TimeOverdueInMinutes
转换所有types的string
var array = (new Function("return [" + str+ "];")());
为什么最好的做法是,使其接受string和对象string
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/
结果在控制台中
有些练习不支持对象string
- 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"}"]
你可以使用split
参考: http : //www.w3schools.com/jsref/jsref_split.asp
"0,1".split(',')
使用带有匿名函数的内置映射函数,如下所示:
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] );
另一个使用ES6的选项是使用扩展语法。
var convertedArray = [..."01234"];
var stringToConvert = "012"; var convertedArray = [...stringToConvert]; console.log(convertedArray);
var i = "[{a:1,b:2}]", j = i.replace(/([a-zA-Z0-9]+?):/g, '"$1":').replace(/'/g,'"'), k = JSON.parse(j); console.log(k)
你为什么不replace,
逗号和split('')
的string,将导致['0', '1']
,此外,你可以将结果包装成parseInt()
将元素转换为整型。
it('convert string to array', function () { expect('0,1'.replace(',', '').split('')).toEqual(['0','1']) });
你也可以使用这个数组 – 使数组包装任何值的开源组件。
例子:
makeArray(1) // => [1] makeArray([1]) // => [1] makeArray(null) // => []
其3个testing之一包装一个数组的string:
makeArray() should wrap an empty string with an array
我删除了字符'[',']',并用','
let array = stringObject.replace('[','')。replace(']','')。split(“,”)。
拆分(“,”)可以将string转换为一个string数组,这是我的代码片段。
var input ='Hybrid App, Phone-Gap, Apache Cordova, HTML5, JavaScript, BootStrap, JQuery, CSS3, Android Wear API' var output = input.split(","); console.log(output);
[“Hybrid App”,“Phone-Gap”,“Apache Cordova”,“HTML5”,“JavaScript”,“BootStrap”,“JQuery”,“CSS3”,“Android Wear API”]