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

459

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

看代码:

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

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

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


1
根据您的需求,字符串和数组已经非常相似(例如,在您的问题中,string[0] === '0'),在大多数情况下,您可以将字符串视为字符数组并在其上使用数组方法。 - Paul S.
1
@PaulS.:在IE8及以下版本中,这将失败 - I Hate Lazy
1
可能是将JavaScript逗号分隔的字符串转换为数组的重复问题。 - Baby
1
支持所有类型字符串的最佳实践。请参见此处https://dev59.com/oGYr5IYBdhLWcg3w8-gz#32657055 - Andi AR
18个回答

5
我会去掉字符'[',']'并使用逗号进行分割。
let array = stringObject.replace('[','').replace(']','').split(",").map(String);

5
您可以使用JavaScript 扩展语法 将字符串转换为数组。在下面的解决方案中,我删除了逗号,然后将字符串转换为数组。
var string = "0,1"
var array = [...string.replace(',', '')]
console.log(array[0])

4

以下有更多“试一试”例子。

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

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

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

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

2

正则表达式

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

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

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

console.log(a);


1

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 => 全局标志


1

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


-1
为什么不这样做:使用 , 替换逗号,然后使用 split('') 将字符串分割成数组,结果为 ['0', '1']。此外,您可以将结果包装在 parseInt() 中,将元素转换为整数类型。
it('convert string to array', function () {
  expect('0,1'.replace(',', '').split('')).toEqual(['0','1'])
});

-1

使用 Array.filter 的示例:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接