Подсчет встречающихся пар в массиве - Javascript - PullRequest
0 голосов
/ 29 августа 2018

Я хочу найти и посчитать пару значений в массиве.

Например:

var Array = ["Apple", "Pear", "Mango", "Strawberry", "Apple", "Pear", "Orange"];

Теперь я хочу посчитать, сколько раз каждая пара (яблоко и груша, груша и манго и т. Д.) Встречается в массиве. Если в массиве есть неровная пара, последнее значение должно быть равно нулю.

Выходные данные массива в примере должны быть:

[2,1,1,1,1]

Обратите внимание, что «Яблоко, Груша» встречается 2 раза, поэтому число будет равно двум, и в первый номер нового массива будет добавлено первое число.

Надеюсь, я объяснил достаточно хорошо

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы можете использовать sort(), используя тот факт, что он передает пары, необходимые для обратного вызова:

var arr = ["Apple", "Pear", "Mango", "Strawberry", "Apple", "Pear", "Orange"];

var pairs = {}

arr.sort((a,b)=>{
    (a+b in pairs)?pairs[a+b]++:pairs[a+b] = 1;
})

console.log(Object.values(pairs))
0 голосов
/ 29 августа 2018

Вы можете использовать хэш-таблицу для подсчета пар, используя два смежных значения, и построить ее ключ для подсчета. Затем используйте значения в качестве результата.

var array = ['Apple', 'Pear', 'Mango', 'Strawberry', 'Apple', 'Pear', 'Orange'],
    count = {},
    result;
    
array.reduce((a, b) => {
    var key = [a, b].join('|');
    count[key] = (count[key] || 0) + 1;
    return b;
});

result = Object.values(count);

console.log(result);
console.log(count);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...