你如何获得一个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的数组了。