你如何获得一个string在JavaScript中的字符数组?

你如何获得一个string在JavaScript中的字符数组?

我在想像一个像"Hello world!"的string 到数组['H','e','l','l','o',' ','w','o','r','l','d','!']

 > "Hello world!".split('') ["H", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"] 

只需用空string分割即可。

请参阅String.prototype.split() MDN文档 。

由于这个问题最初是在五年多前提出的,所以人们仍然在误解这种types的任务。 正如嬉皮士build议的那样 , 我的答案可以打破代理对,曲解“人物”。例如:

 // DO NOT USE THIS! > '𝟘𝟙𝟚𝟛'.split('') [ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ] 

我build议使用以下ES2015function之一来正确处理这些字符序列。

扩展运算符( 已经由insertusername 在这里回答 )

 > [...'𝟘𝟙𝟚𝟛'] [ '𝟘', '𝟙', '𝟚', '𝟛' ] 

Array.from

 > Array.from('𝟘𝟙𝟚𝟛') [ '𝟘', '𝟙', '𝟚', '𝟛' ] 

RegExp u标志

 > '𝟘𝟙𝟚𝟛'.split(/(?=.)/u) [ '𝟘', '𝟙', '𝟚', '𝟛' ] 

如果你还在ES5.1时代,你可以使用这个替代方法(由Babel转译):

 > '𝟘𝟙𝟚𝟛'.split(/(?=(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))/) [ '𝟘', '𝟙', '𝟚', '𝟛' ] 

spread操纵者

您可以使用ECMAScript 2015(ES6)标准中引入的扩展运算符 ,即数组初始化程序:

 var arr = [...str]; 

例子

 function a() { return arguments; } var str = 'Hello World'; var arr1 = [...str], arr2 = [...'Hello World'], arr3 = new Array(...str); console.log( arr1, arr2, arr3, a(...str) ); 

所有示例都包含["H", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"]


浏览器支持

检查ECMAScript ES6兼容性表 。


进一步阅读

  • MDN:传播运营商
  • ECMAScript 2015(ES6):12.2.5数组初始化器

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


演示

尝试购买之前

它已经是:

 var mystring = 'foobar'; console.log(mystring[0]); // Outputs 'f' console.log(mystring[3]); // Outputs 'b' 

或者对于更旧的浏览器友好版本,请使用:

 console.log(mystring.charAt(3)); // Outputs 'b' 

你也可以使用Array.from

 var m = "Hello world!"; console.log(Array.from(m)) 

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

您可以使用Object.assign函数来获得所需的输出:

 Object.assign([], "Hello, world!") [ 'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!' ] 

不一定是对或错,只是另一种select。

Object.assign在MDN网站上有很好的描述。

不使用任何function:

 function key(e) { if (e.keyCode === 13) { var st = document.getElementById('txt').value; var char = []; for (var i = 0; i < st.length; i++) { char.push(st[i]); } document.getElementById('chr').innerHTML = char; } } 
 <input type="text" id="txt" onkeypress="key(event)"></input> <p>Click Enter for char array:</p> <p id="chr"></p> 

你不需要做任何事情。 它已经是char的数组了。

    Interesting Posts