在Javascript中将字符串转换为字符数组的推荐方法

在Javascript中将字符串转换为字符数组的推荐方法,javascript,arrays,Javascript,Arrays,我对Javascript有点陌生,我想知道Array.from(string)和string.split(“”)之间的有效区别 在上面的脚本中,两个日志完全相同: [ 't', 'e', 's', 't' ] [ 't', 'e', 's', 't' ] 知道了这一点,我应该用哪一个?使用它们中的任何一个是否有性能提升?来自MDN: from()有一个可选参数mapFn,它允许您对正在创建的数组(或子类对象)的每个元素执行map函数。更清楚的是,Array.from(obj,mapFn,thi

我对Javascript有点陌生,我想知道Array.from(string)和string.split(“”)之间的有效区别

在上面的脚本中,两个日志完全相同:

[ 't', 'e', 's', 't' ]
[ 't', 'e', 's', 't' ]
知道了这一点,我应该用哪一个?使用它们中的任何一个是否有性能提升?

来自MDN:

from()有一个可选参数mapFn,它允许您对正在创建的数组(或子类对象)的每个元素执行map函数。更清楚的是,Array.from(obj,mapFn,thisArg)与Array.from(obj).map(mapFn,thisArg)的结果相同,只是它不创建中间数组。这对于某些数组子类(如类型化数组)尤其重要,因为中间数组的值必须被截断以适合适当的类型


基本上,
Array.from()。对于您的特定情况,没有性能或功能差异。

好吧,节点中的快速配置文件将告诉您
word.split(“”)
是最快的,其次是
[…word]
,然后是
Array.from(word)
。这是我的基准:

const word='1783638745638476548765873hdsgkfj';
控制台时间('arrayFrom');
for(设i=0;i<10000;i++){
常量arrayFrom=数组。from(字);
}
console.timeEnd('arrayFrom');
控制台。时间(“拆分”);
for(设i=0;i<10000;i++){
const stringSplit=单词分割(“”);
}
控制台。时间结束(“拆分”);
控制台。时间(“传播”);
for(设i=0;i<10000;i++){
常数扩展=[…字];
}
控制台。时间结束(“排列”)使用数组.from()方法从类似数组或可编辑对象创建一个新的浅复制数组实例

split()方法用于将字符串拆分为子字符串数组,并返回新数组


[…word]
?;)呢您的第二种方式几乎适用于任何浏览器。在我看来,这是推荐给最大受众的。在你的情况下,我更喜欢
split()
为什么还要麻烦呢?无论如何,您都可以通过索引访问字符,这比首先转换为数组要快得多,无论您如何操作。“我应该使用哪个”是离题的,因为答案将基于观点。重音字符仍然是单个字符,我不考虑非英语字母表。正则表达式也相对得体:
const fromRegex=word.match(/./g)split()
,代码>为2.327ms,而不是0.555ms,比除split之外的所有其他选项都快。
[ 't', 'e', 's', 't' ]
[ 't', 'e', 's', 't' ]