私は、Microsoft Excel のMODE.MULT関数の比較的複雑な実装を作成しました。この関数は、配列内で最も頻繁に発生する値または反復値の配列を返します。これは、ネストされた別のループを含む 3 つのループで実装されており、もっと簡単な方法があるのではないかと思います。詳細については、返された配列から重複する値を抽出するために、 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]
よろしくお願いします。