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

如何实现两个数组的共同单词以逗号分隔输出?JS代码优化

问题分析

你的代码现在只是把匹配到的单词直接拼接成字符串,完全没加分隔符,所以才会输出hellohurrayfee这种连在一起的结果。另外,如果数组里有重复的共同单词,还会重复添加,这也不是我们想要的效果。

修复方案

我们换个思路:先把所有共同单词收集到数组里,最后用join(', ')方法把数组转换成「逗号加空格」分隔的字符串,就能轻松得到预期格式了。

基础修复版本(保留原循环逻辑)

let first = ["hello", "hurray", "world", "fee"];
let second = ["hello", "earth", "fee", "hurray"];
let res = []; // 改用数组存储结果,不用直接拼接字符串
for (let i=0; i<first.length; i++) {
  for (let j=0; j<second.length; j++) {
    if (first[i] === second[j]) {
      // 避免重复添加同一个单词
      if (!res.includes(first[i])) {
        res.push(first[i]);
      }
      break; // 找到匹配后跳出内层循环,不用白跑剩下的元素
    }
  }
}
console.log(res.join(', ')) 
// 输出: "hello, hurray, fee"

更简洁高效的优化版本

如果数组元素很多,双重循环的效率会很低,我们可以用Set来优化查找速度,同时自动处理重复问题:

let first = ["hello", "hurray", "world", "fee"];
let second = ["hello", "earth", "fee", "hurray"];

// 把第二个数组转成Set,查找时间复杂度直接降到O(1)
const secondWordSet = new Set(second);
// 过滤出first数组里存在于secondSet的单词,并用Set去重
const commonWords = [...new Set(first.filter(word => secondWordSet.has(word)))];

console.log(commonWords.join(', '));
// 输出: "hello, hurray, fee"

关键改进点

  • 用数组存储结果而非直接拼接字符串,让分隔符处理变得异常简单;
  • 添加去重逻辑,避免同一个单词多次出现在最终结果里;
  • 优化版本利用Set的高效查找特性,大幅提升处理大数据量时的性能,代码也更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:58:44