JavaScript:使用reduce函数的句子变体

标签 javascript algorithm 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)))

关于JavaScript:使用reduce函数的句子变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57357795/

相关文章:

javascript - 带有 Vanilla JS 的 Vue-Component 内的 addEventListener

javascript - 如何使用新变量扩展 JavaScript 文字(对象)?

javascript - 输入没有像它应该的那样滚动到最右边

c++ - 处理大数据网络文件计算n个最近节点的高效算法

arrays - 可被 k 整除的子数组数

algorithm - 子集和的 NP 完全归约

javascript - 初学者 Javascript 计时器

c# - 在字符串中查找重复内容?

java - 压缩 .jar 文件以简化 Android 应用程序

javascript - 如何在javascript中更改将对象属性之一传播到另一个对象的数组