Подтвердить что ты не робот

Строка в виде массива

Как, в Javascript, я могу передать строку в виде массива так же, как это делает PHP (массив).

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

В основном у меня есть переменная, которая может быть массивом или строкой, и, если строка, я хочу сделать его массивом с помощью встроенной команды.

4b9b3361

Ответ 1

JavaScript - это язык прототипирования и не имеет системы литья типов.

Одним из решений было бы проверить, является ли ваша переменная строкой и преобразовать ее в массив. Например:

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

В PHP, если вы проверите строку , например (ex: $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

Хакки, но работает:

[].concat(arrayOrString);

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

Ответ 3

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

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

Ответ 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

Ответ 5

Поверните строку в массив:

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

Ответ 6

Просто сделайте это

"sample".split("");

и вы получите

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

Ответ 7

Вы не можете передать в Array в JS, но простая трехмерная операция может делать то, что вы хотите.

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

Это работает для любого объекта без массива или любого примитивного значения. Если вы уверены, что здесь могут встречаться только фактические объекты Array и примитивы string, следующее немного быстрее:

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

Ответ 8

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

использовать split()

Ответ 9

Предложение Val также работает для строк, которые имеют массив массивов

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

Ответ 10

Вы также можете использовать следующую инструкцию if:

if(array instanceof Array != true) {array = [array];}