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

Sco*_*ott 334 javascript arrays string

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

看看代码:

var string = "0,1";
var array = [string];
alert(array[0]);
Run Code Online (Sandbox Code Playgroud)

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

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

I H*_*azy 626

对于像这样的简单数组成员,您可以使用JSON.parse.

var array = JSON.parse("[" + string + "]");
Run Code Online (Sandbox Code Playgroud)

这会给你一个数字数组.

[0, 1]
Run Code Online (Sandbox Code Playgroud)

如果你使用.split(),你最终会得到一个字符串数组.

["0", "1"]
Run Code Online (Sandbox Code Playgroud)

请注意,这JSON.parse将限制您支持的数据类型.如果您需要像undefined或函数这样的值,则需要使用eval()或使用JavaScript解析器.


如果你想使用.split(),但你也想要一个数字数组,你可以使用Array.prototype.map,虽然你需要为IE8和更低版本填充它或只是写一个传统的循环.

var array = string.split(",").map(Number);
Run Code Online (Sandbox Code Playgroud)

  • @Downvoter:尝试描述答案的错误,以便我可以证明你的错误. (9认同)
  • 另请注意,IE6,IE7中不提供`JSON.parse();`.我认为在这种情况下``String.split(',');`更容易. (3认同)

Ale*_* K. 108

把它拆分,角色上;

var string = "0,1";
var array = string.split(",");
alert(array[0]);
Run Code Online (Sandbox Code Playgroud)


Ray*_*Kim 79

这在ES6中很容易实现;

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

Array.from("01")
Run Code Online (Sandbox Code Playgroud)

将console.log

['0', '1']
Run Code Online (Sandbox Code Playgroud)

这正是您正在寻找的.

  • 这是将每个字符转换为数组元素.但是我们只需要逗号分隔的字符串作为数组元素.所以不是有效的解决方案. (14认同)
  • 这太棒了。我将我的代码从 `JSON.parse` 移到了 `Array.from`,因为我使用的是 `ES6`。谢谢你`雷金` (2认同)
  • 但是 `Array.from("0, 1, 233")` 将返回 `["0", ",", " ", "1", ",", " ", "2", "3", " 3"]`,如果我想要 `[0, 1, 233] ` 怎么办? (2认同)

小智 53

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

var a = "['a', 'b', 'c']";
a = a.replace(/'/g, '"');
a = JSON.parse(a);
Run Code Online (Sandbox Code Playgroud)


And*_* AR 24

转换所有类型的字符串

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+ "];")());
Run Code Online (Sandbox Code Playgroud)

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"}"]
Run Code Online (Sandbox Code Playgroud)


小智 19

对于像这样的简单数组成员,您可以使用JSON.parse.

var listValues = "[{\"ComplianceTaskID\":75305,\"RequirementTypeID\":4,\"MissedRequirement\":\"Initial Photo Upload NRP\",\"TimeOverdueInMinutes\":null}]";

var array = JSON.parse("[" + listValues + "]");
Run Code Online (Sandbox Code Playgroud)

这会给你一个数字数组.

现在你的变量值就像array.length = 1

价值输出

array[0].ComplianceTaskID
array[0].RequirementTypeID
array[0].MissedRequirement
array[0].TimeOverdueInMinutes
Run Code Online (Sandbox Code Playgroud)


dm0*_*514 17

您可以使用 split

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

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


Abh*_*dha 16

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

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

var stringToConvert = "012";
var convertedArray  = [...stringToConvert];
console.log(convertedArray);
Run Code Online (Sandbox Code Playgroud)

  • 真棒!与Array.from一起回答它们应该是ES6解决方案的唯一答案. (2认同)

Dan*_*yla 10

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

string.split(',').map(function(n) {return Number(n);});
Run Code Online (Sandbox Code Playgroud)

[编辑]这是你如何使用它

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

  • 我并不是要批评您的答案,但我写这篇文章是因为我使用了您的解决方案并自己遇到了这个问题。想把评论留给其他人可能会遇到类似的问题。 (2认同)
  • 可以缩短为“string.split(',').map(Number)” (2认同)

Sam*_*van 5

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

let array = stringObject.replace('[','').replace(']','').split(",").map(String);
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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

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

var res = str.split(",");
Run Code Online (Sandbox Code Playgroud)


p8u*_*8ul 5

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

var string = "0,1"
var array = [...string.replace(',', '')]
console.log(array[0])
Run Code Online (Sandbox Code Playgroud)