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

我在考虑获取一个字符串,比如"Hello world!"到数组 [' H ', ' e ', ' l ', ' l ', ' o ', ' ', ' w ', ' o ', ' r ', ' l ', ' d ', ' !']


当前回答

在JavaScript中转换字符串为字符数组的4种方法:

const string = 'word';

// Option 1
string.split('');  // ['w', 'o', 'r', 'd']

// Option 2
[...string];  // ['w', 'o', 'r', 'd']

// Option 3
Array.from(string);  // ['w', 'o', 'r', 'd']

// Option 4
Object.assign([], string);  // ['w', 'o', 'r', 'd']

其他回答

在JavaScript中转换字符串为字符数组的4种方法:

const string = 'word';

// Option 1
string.split('');  // ['w', 'o', 'r', 'd']

// Option 2
[...string];  // ['w', 'o', 'r', 'd']

// Option 3
Array.from(string);  // ['w', 'o', 'r', 'd']

// Option 4
Object.assign([], string);  // ['w', 'o', 'r', 'd']

spread语法

你可以使用扩展语法,一个在ECMAScript 2015 (ES6)标准中引入的数组初始化器:

var arr = [...str];

例子

函数a() { 返回参数; } var str = 'Hello World'; Var arr1 =[…str], Arr2 =…“Hello World”), arr3 = new Array(…str), Arr4 = a(…str); Console.log (arr1, arr2, arr3, ar4);

前三个结果是:

["H", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"]

最后一个结果是

{0: "H", 1: "e", 2: "l", 3: "l", 4: "o", 5: " ", 6: "W", 7: "o", 8: "r", 9: "l", 10: "d"}

浏览器支持

查看ECMAScript ES6兼容性表。


进一步的阅读

MDN:扩展运算符 ECMAScript 2015 (ES6): 12.2.5数组初始化器

spread也被称为“splat”(例如在PHP或Ruby中)或“scatter”(例如在Python中)。


Demo

先试后买

这是一个老问题,但我遇到了另一个尚未列出的解决方案。

你可以使用对象。指定函数以获得所需的输出:

var output =对象。assign([], "Hello, world!"); console.log(输出); / / [' H ', ' e ', ' l ', ' l ', ' o ', ',', ' ', ' w”、“o”、“r”、“l”、“d”、“!']

不一定是对与错,只是另一种选择。

对象。分配在MDN站点上描述得很好。

一种可能是:

console.log([1, 2, 3].map(e => Math.random().toString(36).slice(2)).join('').split('').map(e => Math.random() > 0.5 ? e.toUpperCase() : e).join(''));

这个怎么样?

function stringToArray(string) {
  let length = string.length;
  let array = new Array(length);
  while (length--) {
    array[length] = string[length];
  }
  return array;
}