416

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

看代码:

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

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

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

4

18 回答 18

741

对于像这样的简单数组成员,您可以使用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);
于 2012-11-07T15:08:50.853 回答
137

在角色上拆分,

var string = "0,1";
var array = string.split(",");
alert(array[0]);
于 2012-11-07T15:08:50.767 回答
95

这在ES6中很容易实现;

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

Array.from("01")

将控制台.log

['0', '1']

这正是您正在寻找的。

于 2016-06-28T03:27:52.867 回答
69

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

var a = "['a', 'b', 'c']";
a = a.replace(/'/g, '"');
a = JSON.parse(a);
于 2015-09-05T19:27:55.890 回答
27

转换所有类型的字符串

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"}"]
于 2015-09-18T16:40:31.167 回答
22

对于像这样的简单数组成员,您可以使用 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
于 2013-07-10T03:51:32.300 回答
18

您可以使用split

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

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

于 2012-11-07T15:09:00.160 回答
18

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

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

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

于 2017-02-17T05:28:32.233 回答
11

使用带有匿名函数的内置 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] );
于 2014-09-24T22:07:30.047 回答
6

如何在 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/

于 2019-08-26T09:33:09.060 回答
4

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

let array = stringObject.replace('[','').replace(']','').split(",").map(String);
于 2017-07-27T03:51:41.723 回答
4

更多“自己尝试”示例如下。

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

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

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

var res = str.split(",");
于 2018-05-16T07:13:59.167 回答
4

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

var string = "0,1"
var array = [...string.replace(',', '')]
console.log(array[0])
于 2019-12-03T18:34:16.777 回答
2

正则表达式

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

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

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

console.log(a);

于 2020-08-25T19:07:22.480 回答
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] => 匹配所有 az, AZ, 0-9

(): => 对所有匹配的元素进行分组

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

g => 全局标志

于 2017-08-25T09:03:15.510 回答
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”]

于 2017-10-16T10:54:49.530 回答
0

使用示例Array.filter

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

var strArr = Array.prototype.filter.call(str, eachChar => eachChar !== ',');
于 2019-05-29T09:28:12.670 回答
-1

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

it('convert string to array', function () {
  expect('0,1'.replace(',', '').split('')).toEqual(['0','1'])
});
于 2017-02-01T10:28:02.460 回答