javascript - JavaScript:使用 reduce 函数的句子变体
问题描述
出于搜索目的,给定一个字符串,例如BBC Sport
我想构造一个如下所示的数组:
[ 'BBC', 'BB', 'B', 'Sport', 'Spor', 'Spo', 'Sp', 'S' ]
我已经使用 2 个 for 循环来实现它:
const s = "BBC sport";
const tags = [];
const words = s.split(" ");
for (let word of words) {
const wl = word.length;
for (let i = 0; i < wl; i++) {
tags.push(word.substr(0, wl - i));
}
}
// tags now equals [ 'BBC', 'BB', 'B', 'Sport', 'Spor', 'Spo', 'Sp', 'S' ]
但是,如果可能的话,我想用 reduce 函数而不是 for 循环来实现它。
你会怎么解决?
解决方案
老实说,我会按照您的方式编写代码。两个循环可读、可维护且快速。
如果你真的需要一个单行:
s.split(" ").flatMap(word => Array.from(word, (_, i) => word.slice(0, i + 1)))
推荐阅读
- active-directory-group - 如果我只有使用 c# 的 objectguid,如何获取对象详细信息?
- c - 在结构中为我的双指针分配内存时遇到问题
- android - 使用数据绑定和 MVVM 处理 onClick 事件
- angular - 在 Angular 6/7 中编译 HTML
- apache-kafka - Missing key when writing to topic
- php - Contactform 7 - wpcf7_admin_after_additional_settings 操作在类中不起作用
- javascript - 使用 Angular 和 php 选择文件、裁剪和上传
- regex - 用于排除以连续前导零开头或仅为字母的字符串的正则表达式
- database - 关于构建数据库表的最佳方法的建议
- java - Java 程序无法映射本机内存分配