在JavaScript中,我该如何将一个字符串转换成数组,就像PHP的(array)一样。
//PHP
$array = (array)"string"
基本上,我有一个变量可以是数组或字符串,如果是字符串,我想使用内联命令将其变成数组。
在JavaScript中,我该如何将一个字符串转换成数组,就像PHP的(array)一样。
//PHP
$array = (array)"string"
基本上,我有一个变量可以是数组或字符串,如果是字符串,我想使用内联命令将其变成数组。
不太正规,但是有效:
[].concat(arrayOrString);
//Usage:
[].concat("a");
//["a"]
[].concat(["a"]);
//["a"]
concat
和 Array.isArray()
。差异是显著的。 - EnricoArray.isArray(obj) ? obj : [obj]
- jeromej([].concat(foo.bar.stringOrArray)).forEach((item) => {...})
- Kerry JohnsonJavaScript是一种原型语言,没有类型转换系统。
解决方案之一是检查您的变量是否为字符串并将其转换为数组。例如:
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
(编辑:或者Array.isArray
):
arr = arr instanceof Array ? arr : [arr];
arr = Array.isArray(arr) ? arr : [arr];
var str = "string";
var array = str.split('');
console.log(array); // ['s', 't', 'r', 'i','n','g']
str = (array)"string"
的结果是 array("string")
,而不是 array('s','t','r','i','n','g')
。 - Yanick Rochonstr_split($my_string)
的作用是将字符串拆分为字符数组。 - jeromejArray.from()
,请参阅 MDN 注释 [https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from]。 - Tom AugerYou can in 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
将字符串转换为数组:
var myString = "['boop','top','foo']";
var myArray = JSON.parse(myString)
就这样做
"sample".split("");
你会得到
["s", "a", "m", ...]
在JS中您无法将类型转换为数组,但是一个简单的三元操作可以实现您想要的功能。
var str = 'string';
var arr = (str instanceof Array) ? str : [ str ];
这适用于任何非数组对象或任何基本值。如果您确定只有实际的Array
对象和string
原语可以在此处遇到,则以下速度更快:
var arr = (typeof str === 'string') ? [ str ] : str;
Array.isArray(str) ? str:[str]
相比如何? - jeromejArray.isArray
更好一些。 - jeromej"1,2,3".split(",")
=> ["1", "2", "3"]
你也可以使用以下的if语句:
if(array instanceof Array != true) {array = [array];}
Array.isArray(foo) || (foo = [foo]);
或者如果这不太舒服
foo = Array.isArray(foo) ? foo : [foo];