как посчитать частоту в два массива по ES6 - PullRequest
0 голосов
/ 01 декабря 2018

Частота строки в массиве строк. Создайте функцию, которой вам дан набор строк и список запросов.Для каждого запроса есть заданная строка.Нам нужно вывести количество раз, когда данная строка встречается в коллекции строк.

Примеры:

  • Ввод:

    a[] = [wer, tyu, uio]
    b[] = [wer, wer, tyu, oio, tyu]
    
  • Вывод: [2 2 0]

Объяснение: a[0] появляется два раза в b[]

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

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

Тогда для каждой записи в хэше у вас будет счетчик частоты (подсчитанный с помощью reduce).

Одна идея - не просто вернутьэтот хеш, но возвращает функцию, которая обращается к хешу и возвращает соответствующую частоту или 0, если его нет в этом хеш-коде.

Вот как это будет выглядеть:

// Returns function that can answer queries for the given collection of strings
function freq(strings) {
    const counts = strings.reduce((map, s) => map.set(s, (map.get(s)||0)+1), new Map);
    return s => counts.get(s) || 0;
}

// Sample call. The 3 queries are fed into the function returned by freq
const results = ["wer", "tyu", "uio"].map(freq(["wer", "wer", "tyu", "oio", "tyu"]));

console.log(results);
0 голосов
/ 01 декабря 2018

function occur (a,b) {
	let count = [];

for (var i = 0; i<= a.length ; i++) {
	for (var j = 0;j<= b.length; j++) {
			if (a[i]==b[j]) { 
				
               return count[i] = count[i]++;
			}
		}
		
}
}
console.log(occur(["aaaa","cc" ,"dd"],["aaaa","dd"]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...