JavaScript中如何将含空格的字符串数组转换为单一数组列表?
解决数组元素拆分合并问题
嘿,我来帮你搞定这个问题~你之前的尝试踩了两个小坑:
arr是数组类型,而split()是字符串的专属方法,直接调用arr.split(" ")会报错,因为数组根本没有这个方法;- 用
arr.toString()会把数组转成逗号分隔的字符串(比如"john doe first,robert way,jason doe,alex"),这时候再按空格拆分,会得到带逗号的错误元素,自然不符合预期。
下面给你几种简洁可靠的解决方案:
方案1:用flatMap(最推荐)
flatMap会先对数组每个元素执行映射操作,再自动将结果扁平化(把嵌套数组转成一维),完美匹配你的需求:
var arr = ["john doe first", "robert way", "jason doe", "alex"]; var result = arr.flatMap(str => str.split(" ")); console.log(result); // 输出:["john", "doe", "first", "robert", "way", "jason", "doe", "alex"]
方案2:map + flat组合
如果你的运行环境不支持flatMap(现在主流浏览器/Node.js都支持了),可以先通过map把每个字符串拆分成数组,再用flat()扁平化:
var result = arr.map(str => str.split(" ")).flat();
方案3:用reduce手动合并
如果你想更直观地控制合并过程,可以用reduce累加每个拆分后的数组:
var result = arr.reduce((accumulator, currentStr) => { return accumulator.concat(currentStr.split(" ")); }, []); // 初始值是空数组,用来存放最终结果
以上三种方法都能得到你想要的结果,选最顺手的用就行~
内容的提问来源于stack exchange,提问作者parth
相关产品推荐
相关产品推荐

