【问题标题】:How can I find anagrams in an array of words?如何在单词数组中找到字谜?
【发布时间】:2021-09-10 00:21:29
【问题描述】:

我正在尝试从一组单词中获取所有字谜:

arr = ['cab','bac','tru']

预期的输出应该是:

{abc: ['cab','bac']}

我尝试实现以下代码:

var words = ['cab', 'bac', 'mihir']
let result = {}

words.forEach(word => {
  var a = word.split("").sort().join("");
  result[word] = a

})

console.log(result)

如何迭代这些值,以便在它们具有相同值的情况下访问键?

【问题讨论】:

  • 使用排序列表作为键,记录出现次数并过滤掉计数
  • 您不需要迭代这些值,但是,您需要 result[word] = a 而不是 if (result[word]) result[word].push(a) else result[word]=[a]
  • @DaveNewton 我可以计算出现次数,但是如何将它添加到应该是另一个对象的值的数组中

标签: javascript arrays object key-value


【解决方案1】:

您可以将排序后的单词用作对象中的键,并将与键匹配的每个单词收集到数组中:

var words = ['cab', 'bac', 'mihir']
let result = {}

for (const word of words) {
  const sorted = word.split("").sort().join("");

  if (sorted in result) {
    // If there is already an entry in the result, append this word
    result[sorted].push(word);
  } else {
    // Otherwise, create one
    result[sorted] = [word];
  }
}

console.log(result);

【讨论】:

    猜你喜欢
    • 2013-09-20
    • 2023-03-09
    • 2011-09-19
    • 2011-02-07
    • 2011-12-15
    • 2021-10-16
    • 2012-09-10
    • 2015-05-06
    • 2020-01-16
    相关资源
    最近更新 更多