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

如何用更简洁的代码实现查找数组元素中的重复多字母?

更简洁的实现:筛选包含多个小写字母“o”的科技公司

你的原代码逻辑可以大幅简化——不需要多层嵌套循环和分两次筛选,用数组的filter方法配合正则或字符计数就能一步到位,而且代码可读性更强。

方案1:正则表达式匹配(最简洁)

const ItCompanies = ["Facebook", "Google", "Microsoft", "Apple", "IBM", "Oracle", "Amazon"];
const companiesWithMultipleO = ItCompanies.filter(company => 
  (company.match(/o/g) || []).length >= 2
);
console.log(companiesWithMultipleO); // 输出 ["Google", "Microsoft"]
  • 原理:用/o/g全局匹配字符串里的所有小写“o”,match返回匹配结果数组(无匹配则返回null,所以用|| []避免报错),判断数组长度≥2即可筛选出包含多个“o”的元素。

方案2:字符计数(无正则,更直观)

如果你不想用正则,可以封装一个简单的计数函数:

const ItCompanies = ["Facebook", "Google", "Microsoft", "Apple", "IBM", "Oracle", "Amazon"];

// 计算字符串中指定字符的出现次数
const countCharOccurrences = (str, char) => str.split(char).length - 1;

const companiesWithMultipleO = ItCompanies.filter(company => 
  countCharOccurrences(company, 'o') >= 2
);
console.log(companiesWithMultipleO);
  • 原理:用split(char)把字符串按指定字符分割,分割后的数组长度减1就是该字符的出现次数,以此判断是否满足“多个”的条件。

原代码的问题说明

你的原代码存在逻辑冗余和变量冲突问题:

  • 重复使用变量i导致内层循环会覆盖外层循环的索引,逻辑混乱;
  • 分两次筛选(先挑含“o”的,再判断数量)效率更低;
  • 多层嵌套循环让代码可读性差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:55:12