【发布时间】:2020-10-11 03:40:23
【问题描述】:
如您所见,我正在尝试使用哈希图和对象分析给定数组中哪个值出现频率最高。如果可以,请尝试找出每种算法的答案(哈希图和对象)。
下面的示例使用哈希映射来“映射”各种对象。但是,我有两个问题: 1. 我不能正确地增加出现次数:在出现变量等于 1 之后,该值将永远保持,因此算法提供了错误的模式。 2.我不知道如何在迭代完成后更改地图的值。
var highestFrequency = (array) => {
var occurenceStored = new Map();
let occurrence = 0;
for (var i = 0; i < array.length; i++){
var j = i + 1;
if (array[i] === array[j]){
occurrence += 1;
occurenceStored.set(array[i], occurrence)
}
}
console.log(occurenceStored);
}
highestFrequency([101, 104, 108, 108, 111, 119, 119, 119])
我决定不使用哈希图,而是使用对象,但我遇到了同样的问题。出现变量永久等于 1。我尝试在不同的地方声明出现变量,但似乎找不到正确的修复方法。
var highestFrequency = (array) => {
var occurenceStored = {};
let occurrence = 1;
for (var i = 0; i < array.length; i++){
var j = i + 1;
if (array[i] === array[j]){
occurenceStored[array[i]] = occurrence;
}
}
console.log(occurenceStored);
}
highestFrequency([101, 104, 108, 108, 111, 119, 119, 119, 120, 120, 120])
【问题讨论】:
-
用
reduce方法来做这件事怎么样?array.reduce((a, e)=>(a[e] = a[e] || 0, a[e]++, a),{})
标签: javascript