我正在研究一个问题,要求输入一个字符串string并以交替的顺序返回一个新字符串,该字符串中string中的2个最频繁的字母。

我的代码:

var word = "pponoomababaaa";
var len = word.length;

function twoLetters (word){
var arr = []
word = word.split("")
for (var i = 0; i < word.length; i++){
    if ((arr[word[i]])) arr[word[i]] += 1
    else arr[word[i]] = 1
  }
return arr  // [ p: 2, o: 3, n: 1, m: 1, a: 5, b: 2 ]
}
twoLetters(word)


返回的arr的长度为0,我无法理解,因此我无法对其执行任何操作。我尝试将其放入对象中,但仍然存在相同的问题。如何使arr等于key:value对,然后找到2个最高的values,然后将keys以交替的顺序添加到字符串中。我使用的代码朝正确的方向前进吗?

最佳答案

如果将数组更改为对象,则可以使用:

var word = "pponoomababaaa";
var len = word.length;

function twoLetters (word){
  var arr = {}
  word = word.split("")
  for (var i = 0; i < word.length; i++){
    if ((arr[word[i]])) arr[word[i]] += 1
    else arr[word[i]] = 1
  }
  return arr  // { p: 2, o: 3, n: 1, m: 1, a: 5, b: 2 }
}

twoLetters(word)


在JavaScript中,数组([])不包含键-值对(嗯,有点:索引是可以说的键)。您要查找的数据结构是一个普通对象({}),该对象可以容纳键/值对。

编辑

只是为了澄清一下,您可以将成员添加到数组([]),但是数组长度将为0。这是我在Chrome浏览器控制台中的输出,您可以看到可以在其中添加成员。数组本身。但是,不建议使用此方法。

javascript - 如何在字符串中找到2个最常见的字母并使用javascript返回一个新字符串-LMLPHP

07-24 15:53