[英]How do I find the 2 most frequent letters in a string and return a new string with them with javascript
我正在上要求帶一個字符串的問題string
並在返回與2個最常見的字母一個新的字符串string
交替排列。
我的代碼:
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瀏覽器控制台中的輸出,您可以在其中看到可以將成員添加到數組中本身。 但是,不建議使用此方法。
您可以為此使用地圖
var myMap = new Map(); var word = "pponoomababaaa"; var chars = word.split(""); chars.forEach(function(char) { if (!myMap.get(char)) { myMap.set(char, 1); } else { var count=myMap.get(char); count+=1; myMap.set(char,count); } }); for (var [key, value] of myMap.entries()) { console.log(key + " = " + value); } //if to copy to new array var newarr=Array.from(myMap); console.log(newarr);
希望這可以幫助
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
}
console.log(arr.p)
return arr // [ p: 2, o: 3, n: 1, m: 1, a: 5, b: 2 ]
}
twoLetters(word)
您不是在創建數組,而是在創建對象。 它確實具有key:value對,如您將在console.log(arr.p)
看到的那樣,要使其成為數組,您需要將其push
入arr。
這是更新的代碼,其中arr
作為對象( {}
)而不是數組( []
)
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 ] } console.log(twoLetters(word))
在數組中設置鍵將把它變成一個對象。 您的arr = []
在jsbin( http://jsbin.com/povimehiyu/ )中運行正常(請檢查控制台)。 但不在代碼段中,因此修改了arr = {}
length
屬性。 arr
添加鍵將其更改為對象,並且只要在arr
中設置鍵值的人就不會更新length
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.