【发布时间】:2020-11-02 20:35:38
【问题描述】:
我正在寻找解决我遇到的 JavaScript 编码挑战,问题如下:
编写一个接受整数数组并返回该数组元素的函数。
该函数应确定每个元素的频率(该元素在数组中出现的次数),并尽可能返回频率第二低的元素。否则它应该返回频率最低的整数。
如果满足要求的元素不止一个,则应返回第二小的元素(根据值)。
示例输出:
secondLowest( [4, 3, 1, 1, 2] ) === 1
secondLowest( [4, 3, 1, 1, 2, 2] ) === 2
secondLowest( [4, 3, 1, 2] ) === 2
这是我到目前为止所得到的,尽管在此之后不知道如何最好地回答它:
function mode(array) {
if (array.length == 0) return null;
let modeMap = {};
let maxEl = array[0],
maxCount = 1;
for (let i = 0; i < array.length; i++) {
var el = array[i];
if (modeMap[el] == null) modeMap[el] = 1;
else modeMap[el]++;
if (modeMap[el] > maxCount) {
maxEl = el;
maxCount = modeMap[el];
}
}
return maxEl;
}
【问题讨论】:
-
挑战 ...请添加你的。
-
第一个例子应该返回 2,而不是一个,对吧?
-
第一个示例应该返回 2,或者第二个示例应该返回 1...
-
@MHebes 它返回 1,因为它说“尽可能应该返回频率第二低的元素”,因为 1 在那种情况下出现两次,其余出现一次(它的措辞不是很好,所以道歉)
-
@WillBuck 谢谢Will,感谢您的提醒,下次注意! :)
标签: javascript arrays frequency