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

如何统计字符串中包含的数组元素出现总次数?

统计字符串中数组元素的总出现次数

要实现你需要的功能,核心思路是遍历数组中的每个关键词,统计每个关键词在字符串中的子串出现次数,最后累加所有次数。以下是具体实现:

代码实现

// 转义正则特殊字符,避免关键词包含正则元字符时出错
function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

let array = [
    "foo",
    "bar"
];

function funnyFunction(string) {
    let totalCount = 0;
    // 遍历每个关键词
    array.forEach(keyword => {
        const escapedKey = escapeRegExp(keyword);
        // 创建全局匹配的正则表达式
        const regex = new RegExp(escapedKey, 'g');
        // 获取所有匹配结果,无匹配则返回null
        const matches = string.match(regex);
        // 累加次数,无匹配时加0
        totalCount += matches ? matches.length : 0;
    });
    return totalCount;
}

// 测试示例
console.log(funnyFunction("Have you ever wondered why they use foo in programming examples? And sometimes they use foo and bar when there's an amount of something. And I still don't know what foobar even means."));
// 输出:5

关键说明

  • 正则转义:如果关键词包含.、*、?这类正则特殊字符,必须先转义,否则会导致匹配逻辑出错(比如关键词"foo.bar"会被正则解析为匹配"foo"后接任意字符再"bar")。
  • 全局匹配:使用g修饰符让正则遍历整个字符串,找到所有符合的子串,match()返回的数组长度就是该关键词的出现次数。
  • 边界处理:当关键词在字符串中没有匹配时,match()返回null,这里用三元运算符处理为0,避免累加时出错。

验证场景

调用funnyFunction("foo bar")和funnyFunction("foobar")都会返回2,完全符合你的需求。

内容的提问来源于stack exchange,提问作者sophb.chan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:37:17