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

时间:2012-11-07 15:07:37

标签: javascript arrays string

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

查看代码:

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

在这种情况下,alert会弹出0,1。如果它是一个数组,它会弹出一个0,当调用alert(array[1]);时,它应弹出1

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

18 个答案:

答案 0 :(得分:576)

对于像这样的简单数组成员,您可以使用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);

答案 1 :(得分:100)

Split它位于,字符上;

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

答案 2 :(得分:74)

这可以在 ES6 ;

中轻松实现

您可以使用Array.from('string');

将字符串转换为数组
Array.from("01")

将是console.log

['0', '1']

这正是您正在寻找的。

答案 3 :(得分:50)

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

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

答案 4 :(得分:23)

转换所有类型的字符串

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"}"]

答案 5 :(得分:17)

对于像这样的简单数组成员,您可以使用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

答案 6 :(得分:15)

您可以使用split

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

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

答案 7 :(得分:14)

使用ES6的另一个选择是使用 Spread 语法。

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

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

答案 8 :(得分:10)

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

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

[edit]这里是你如何使用它

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

答案 9 :(得分:3)

更多"自己动手"以下示例。

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

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

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

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

答案 10 :(得分:3)

您可以使用JavaScript Spread Syntax将字符串转换为数组。在下面的解决方案中,我删除了逗号,然后将字符串转换为数组。

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

答案 11 :(得分:1)

How to Convert Comma Separated String into an Array in 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中将字符串转换为数组的更多示例:

  1. Split()-无分隔符:
  2. Split()–空字符串分隔符:
  3. Split()–开头/结尾处的分隔符:
  4. 正则表达式分隔符:
  5. 捕获括号:
  6. 具有极限参数的Split()

    查看此链接 ==> https://www.tutsmake.com/javascript-convert-string-to-array-javascript/

答案 12 :(得分:0)

我删除了字符' [',']'并使用','

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

答案 13 :(得分:0)

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 =>全球旗帜

答案 14 :(得分:0)

Split(",")可以使用逗号将字符串转换为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"]

答案 15 :(得分:0)

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

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

答案 16 :(得分:0)

Regexp

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

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

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

console.log(a);

答案 17 :(得分:-1)

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

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