将字符串转换为数组

时间:2012-10-27 18:25:03

标签: javascript

如何在Javascript中,我可以像PHP(数组)一样将字符串转换为数组。

//PHP
$array = (array)"string"

基本上我有一个可以是数组或字符串的变量,如果是字符串,我想使用内联命令使它成为一个数组。

11 个答案:

答案 0 :(得分:30)

Hacky,但有效:

[].concat(arrayOrString);

//Usage:
[].concat("a");
//["a"]
[].concat(["a"]);
//["a"]

答案 1 :(得分:22)

JavaScript是一种原型语言,没有类型转换系统。

一种解决方案是检查您的变量是否为字符串并将其转换为数组。例如:

if (typeof someVariable == 'string') someVariable = [someVariable];

在PHP中,如果您检查字符串,例如(例如:$array = 'string';):

$array = (array) $array;  // ex: "string" becomes array("string")

JavaScript等价物将是

arr = typeof arr == 'string' ? [arr] : arr;

如果您的变量arr不一定是字符串,则可以使用instanceof

arr = arr instanceof Array ? arr : [arr];

答案 2 :(得分:7)

var str    = "string";
var array  = str.split('');

console.log(array); // ['s', 't', 'r', 'i','n','g']

答案 3 :(得分:4)

你可以在jQuery中......

var arr = "[1,2,3,4,5]"; 
window.x = $.parseJSON(arr);
console.log(x);//cast as an array...

即使你有像

这样的东西也可以
[{"key":"value"}]

但是,如果你有这样的东西,这可能不起作用......

[{key:"value"}] // different is the " (double quotes) on key

答案 4 :(得分:3)

将字符串转换为数组:

var myString = "['boop','top','foo']";
var myArray = JSON.parse(myString)

答案 5 :(得分:1)

就这样做

"sample".split("");

你会得到

["s", "a", "m", ...]

答案 6 :(得分:0)

你不能在JS中强制转换为Array,但是一个简单的三元操作可以做你想要的。

var str = 'string';
var arr = (str instanceof Array) ? str : [ str ];

这适用于任何非Array对象或任何原始值。如果您确定在这里只能遇到实际的Array对象和string基元,则以下内容会更快一些:

var arr = (typeof str === 'string') ? [ str ] : str;

答案 7 :(得分:0)

"1,2,3".split(",") 
=> ["1", "2", "3"]

使用split()

答案 8 :(得分:0)

Val的建议也适用于具有数组数组的字符串

var str = "[[1121,1],[1122,2],[1123,3]]";
var arr = $.parseJSON(str);
console.log(arr); //returns array of arrays

答案 9 :(得分:0)

您还可以使用以下if语句:

'a' in False

答案 10 :(得分:0)

Array.flatten()已有a proposal,可与babel-preset-stage-2一起使用。



const array = ['foo'].flatten()
console.log(array) // ['foo']

const array = [['foo', 'bar']].flatten()
console.log(array) // ['foo', 'bar']