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

如何使用JavaScript从单词数组中查找所有变位词(anagrams)

变位词分组实现方案

你当前的代码逻辑刚好和分组需求相反,你是将原单词作为键、排序后的字符串作为值,正确的分组逻辑应该把排序后的字符串作为分组键,对应的值存储所有属于该组的原单词数组,具体实现如下:

完整实现代码

const words = ['cab', 'bac', 'tru', 'mihir'];
const result = {};

words.forEach(word => {
  // 生成排序后的字符串作为分组唯一标识
  const sortedKey = word.split('').sort().join('');
  // 若该分组不存在则初始化空数组
  if (!result[sortedKey]) {
    result[sortedKey] = [];
  }
  // 将当前单词加入对应分组
  result[sortedKey].push(word);
});

// 如果你需要过滤掉只有单个单词的分组(和示例输出保持一致),添加以下逻辑
const filteredResult = {};
for (const key in result) {
  if (result[key].length > 1) {
    filteredResult[key] = result[key];
  }
}

console.log(filteredResult); // 输出 {abc: ['cab','bac']}

逻辑说明

  • 排序后的字符串可以作为变位词的唯一标识,所有互为变位词的单词排序后得到的字符串完全相同
  • 以该标识为键存储对应单词数组,即可自动完成变位词的分组
  • 额外的过滤逻辑可以按照你的需求决定是否保留,不需要过滤的话直接输出result即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:21:00