我正在研究一个问题,要求输入一个字符串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浏览器控制台中的输出,您可以看到可以在其中添加成员。数组本身。但是,不建议使用此方法。