如何将二维字符串数组转换为单个数组并统计总单词数
JavaScript二维句子数组统计总单词数的优化实现
不用手动写嵌套循环,可以直接用JS内置的数组实例方法实现,代码更简洁易维护,底层经过引擎优化性能和手动循环基本持平,以下是两种常见实现:
实现1:链式调用(适合常规场景,可读性高)
先把二维数组拍平为字符串数组,再直接拆分合并为单词数组取长度即可:
const temp2 = [ ['this is an array'], ['this is a scentence'], ['I love stackoverflow'] ] const totalWords = temp2 // 把二维数组拍平为一维字符串数组 .flat() // 每个字符串按空格拆分为单词数组,自动合并为一维的全量单词数组 .flatMap(str => str.split(' ')) .length console.log(totalWords) // 输出9
实现2:reduce累加(适合超大数组场景,内存占用更低)
如果数组规模很大,不需要生成完整的单词数组占额外内存,可以直接累加每个句子的单词数:
const temp2 = [ ['this is an array'], ['this is a scentence'], ['I love stackoverflow'] ] const totalWords = temp2.reduce((sum, subArr) => { subArr.forEach(str => sum += str.split(' ').length) return sum }, 0) console.log(totalWords) // 输出9
边缘情况处理
如果句子中存在连续空格、首尾空格的情况,split(' ')会产生空字符串,统计时可以加过滤逻辑:
// 拆分后过滤掉空字符串再统计长度 str.split(' ').filter(Boolean).length
内容的提问来源于stack exchange,提问作者Shuib Abdillahi
相关产品推荐
相关产品推荐

