我一直在想出一個對這個練習的答案,但是在那裏我看不到它。我將分享練習的描述,我的代碼和最後的輸出。使用Javascript計算字符串的頻率字母
描述:
現在我們要拯救每個數組的長度最長的一個新的數組稱爲array_lengths
打開控制檯,並重新加載索引頁看到代碼的結果。
編寫一個函數charFreq(),該函數接受一個字符串並構建其中包含的字符的頻率列表。
作爲一個條件,你必須使用對象freqCounter。
將列出的頻率表示爲Javascript對象。用charFreq(「abbabcbdbabdbdbabababcbcbab」)來嘗試。
CODE:
function charFreq(string) {
var array_lengths = [];
// compute frequencies of each value
for (var i = 0; i < string.length; i++) {
value = string[i];
if (value in array_lengths) {
array_lengths[value] ++;
} else {
array_lengths[value] = 1;
}
}
// make array from the frequency object to de-duplicate
var freqCounter = [];
for (value in array_lengths) {
freqCounter.push(value);
}
// sort the uniques array in descending order by frequency
function compareFrequency(a, b) {
return array_lengths[b] - array_lengths[a];
}
return freqCounter.sort(compareFrequency);
}
//OUTPUT:
// if I had it right I should get "true" from every of the following values of the function but the point is that I'm getting all false...where's the error?
counter = charFreq("abbabcbdbabdbdbabababcbcbab");
console.log(counter['a'] === 7);
console.log(counter.b === 14);
console.log(counter['c'] === 3);
字符串是一個字符串。你需要一個數組。做:arr = string.split(「」); –
你的問題是你正在返回一個有序數組'freqCounter',它只包含鍵值,而不包含值。如果您立即返回array_lengths,您的代碼將是正確的。 – Marie
是的,謝謝瑪麗! – Defoe