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

IT技术 javascript arrays string deserialization
2021-01-23 11:43:37

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

看代码:

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

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

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

6个回答

对于这样的简单数组成员,您可以使用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);
@Downvoter:试着描述答案有什么问题,这样我就可以证明你是怎么错的。
2021-03-19 11:43:37
@我讨厌懒惰这不支持对象字符串。见这里stackoverflow.com/a/32657055/2632619
2021-03-23 11:43:37
@FarzadYZ 小心(使用eval)。如果数组包含来自客户端输入的值,这将是不安全的。
2021-03-24 11:43:37
另请注意,JSON.parse();在 IE6、IE7 中不可用。我认为在这种情况下String.split(',');更容易。
2021-03-31 11:43:37
@scunliffe:确实,需要一个垫片,或者可以采用 jQuery 方法来填充它var array = (new Function("return [" + string + "];"))()使用.split()是正常的,如果不需要数字,否则你需要映射的结果。
2021-04-06 11:43:37

,拆分角色;

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

这在ES6 中很容易实现

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

Array.from("01")

将 console.log

['0', '1']

这正是您要寻找的。

这是将每个单个字符转换为数组元素。但是我们只需要逗号分隔的字符串作为数组元素。所以不是一个有效的解决方案。
2021-03-21 11:43:37
这太棒了。我将我的代码从JSON.parseArray.fromas am using ES6谢谢Ray Kim
2021-03-23 11:43:37
糟糕的解决方案!更多信息查看https://github.com/gildata/RAIO/issues/116#issuecomment-325901359
2021-03-26 11:43:37
任何版本的 IE 都不支持此功能。当心
2021-03-29 11:43:37
但是Array.from("0, 1, 233")会回来["0", ",", " ", "1", ",", " ", "2", "3", "3"],如果我想要[0, 1, 233] 呢?
2021-04-04 11:43:37

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

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

转换所有类型的字符串

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"}"]
很棒的功能我也使用它,但不幸的是它不适用于字符串或符号:例如“0,s”任何想法如何解决这个问题?
2021-03-16 11:43:37
@sqp_125 尝试 0,'s' ?
2021-03-16 11:43:37