【发布时间】:2019-08-18 18:56:11
【问题描述】:
我正在研究频率计数器的代码,我在其中计算给定字符串中每个单词的频率。
我正在创建一个对象,并将每个单词作为键,并将其频率作为键值对的值。
function wordCount(str) {
tempStr = str.toUpperCase()
arr1 = tempStr.split(" ")
let frequencyConter1 = {}
for (let val of arr1) {
frequencyConter1[val] = (frequencyConter1[val] || 0) + 1
}
for (key in frequencyConter1) {
console.log(key, frequencyConter1[key])
}
}
wordCount("My name is Xyz 1991 He is Abc Is he allright")
1991 1
MY 1
NAME 1
IS 3
XYZ 1
HE 2
ABC 1
ALLRIGHT 1
为什么 1991 年在输出中排名第一?
应该是在XYZ之后吧?
【问题讨论】:
-
如果您想保留任意键的顺序,请使用
Map。对象键有一些关于它们的顺序的规则,有一个没有指定为 for...in 循环尊重的顺序,总体上不太适合这个任务。
标签: javascript object