Это создает массив пар и соответствующее количество вхождений. Затем он находит пару с большинством вхождений. Вот fiddle.
var data = [
[ 30, 40 ],
[ 40, 40 ],
[ 100, 100 ],
[ 100, 100 ],
[ 100, 100 ],
[ 200, 100 ],
[ 200, 200 ]
];
var countData = new Array();
for (var i = 0; i < data.length; i++) {
// see if the pair exists, if not increment count
var exists = false
for (var j = 0; j < countData.length; j++) {
if (countData[j].pair[0] == data[i][0] && countData[j].pair[1] == data[i][1]) {
countData[j].count++;
exists = true;
}
}
if (!exists) {
var tmp = new Object();
tmp.pair = data[i];
tmp.count = 1;
countData.push(tmp);
}
}
var mostFrequentPair = { pair: null, count: 0 };
for (var i = 0; i < countData.length; i++) {
if (countData[i].count > mostFrequentPair.count) mostFrequentPair = countData[i];
}
console.log('The most frequent pair is [' + mostFrequentPair.pair + '] which occurs ' + mostFrequentPair.count + ' times.');
Вы можете добавить еще один цикл, если вы хотите, чтобы найти пары, которые были связаны для максимального числа появлений.
Что вы пробовали? – Vallentin
Покажите нам свой код. Что вы пробовали? Вы ожидаете, что мы будем выполнять всю работу? – h2ooooooo
нет .. только некоторые идеи. Я думал присоединиться к значениям массива в строке и поместить это как ключ в другой массив. затем увеличивайте счетчик на этом массиве каждый раз, когда я нахожу дубликат ключа. но это звучит сложно, должно быть несколько проще. – Elfy