You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于overusedWords数组过滤storyWords数组的替代实现方案求助

过滤数组元素的几种实用实现方法

嘿,我懂你搜了半天没找到精准方案的郁闷,这就给你几个靠谱的实现方式,既能替代现有代码的效果,也能解决你之前循环失败的问题!

1. 用Array.filter()实现(最简洁的原生方法)

这是JavaScript里专门为数组过滤设计的方法,一行代码就能搞定,可读性还强。核心逻辑就是遍历storyWords的每个元素,只保留不在overusedWords里的单词。

// 先定义你的基础数据
const overusedWords = ['literally', 'most', 'beautiful'];
const story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W ...';
const storyWords = story.split(/\W+/); // 将字符串分割为单词数组

// 生成过滤后的新数组
const filteredWords = storyWords.filter(word => !overusedWords.includes(word));

console.log(filteredWords); // 输出不含过度使用单词的数组

解释:filter()会遍历数组的每一项,回调函数返回true的元素会被保留到新数组里。这里用!overusedWords.includes(word)判断当前单词不在禁用列表中,符合条件就留下。

2. 手动循环实现(解决你之前循环失败的问题)

如果你更倾向于用循环来写,大概率是之前的循环逻辑有小疏漏(比如没初始化空数组、判断条件写反)。下面是两种正确的循环写法:

传统for循环

const overusedWords = ['literally', 'most', 'beautiful'];
const story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W ...';
const storyWords = story.split(/\W+/);

const filteredWords = []; // 一定要先初始化空数组
for (let i = 0; i < storyWords.length; i++) {
  const currentWord = storyWords[i];
  // 关键:判断单词不在过度使用列表里才添加
  if (!overusedWords.includes(currentWord)) {
    filteredWords.push(currentWord);
  }
}

console.log(filteredWords);

更简洁的for...of循环

const filteredWords = [];
for (const word of storyWords) {
  if (!overusedWords.includes(word)) {
    filteredWords.push(word);
  }
}

注意:之前循环失败很可能是没加!(取反),导致把要过滤的单词留了下来,或者忘记初始化用来存放结果的空数组,现在这个写法就能完美避免这些问题。

3. 大数组优化方案:用Set提升查找效率

如果你的overusedWords里有大量元素,用includes()每次查找都是O(n)的时间复杂度,效率偏低。这时候可以把overusedWords转成Set,查找时间会降到O(1),性能更好:

const overusedSet = new Set(overusedWords); // 转成Set
const filteredWords = storyWords.filter(word => !overusedSet.has(word));

或者用循环配合Set:

const overusedSet = new Set(overusedWords);
const filteredWords = [];
for (const word of storyWords) {
  if (!overusedSet.has(word)) {
    filteredWords.push(word);
  }
}

内容的提问来源于stack exchange,提问作者Gabriel Velloso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:34:12