我编写了 Microsoft Excel 的MODE.MULT函数的一个相对复杂的实现,该函数返回一个数组中最常出现或重复的值的数组。它是用三个循环实现的,包括一个嵌套到另一个循环中,我怀疑有一种更简单的方法来解决它。有关信息,它使用Lo-Dash中的_.uniq从返回的数组中提取重复值。
function MODEMULT(range) {
var n = range.length;
var max = 0;
var counts = new Array();
var result = new Array();
for (var i = 0; i < n; i++) {
counts[i] = 0;
for (var j = 0; j < n; j++) {
if (range[j] === range [i]) {
counts[i]++;
max = (counts[i] > max) ? counts[i] : max;
}
}
}
for (var k = 0; k < n; k++) {
if (counts[k] === max) {
result.push(range[k]);
}
}
return _.uniq(result);
}
出于测试目的,MODEMULT([1,2,3,4,3,2,1,2,3])
应返回[2,3]
在此先感谢您的帮助!