<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Как отсортировать массив строк по чаcтоте присутствия каждого слова в JavaScript?

Как отсортировать массив строк по чаcтоте присутствия каждого слова в JavaScript?

В данной статье мы рассмотрим с Вами как можно отсортировать массив строк в JavaScript в убывающем порядке в зависимости от частоты присутствия каждого слова в исходном списке.

Итак, вот задача: есть список повторяющихся строк. Необходимы подсчитать количество появлений каждого слова, а затем отсортировать полученный список по частоте присутствия каждого слова в порядке убывания.

Вот пример:


// исходный массив
let fruits = ['banana', 'fruit', 'apple', 'apple', 'orange', 'banana', 'orange', 'banana', 'banana', 'apple'];

// должны получить,
// так как слово 'banana' встречается в исходном списке 4 раза, 'apple' - 3 раза и т.д.
['banana', 'apple', 'orange', 'fruit']

Скрипт, который решает данную задачу:


/**
 * Сортировка элементов массива по частоте их присутствия
 *
 * @param {Array<string>} array 
 * 
 * @returns {Array<string>}
 */
function sortByCount(array)
{
    if( !Array.isArray(array) )
        throw new TypeError('Неправильный тип, ожидался массив, получен ' + typeof array);

    // карта для подсчета того, сколько раз встречаются строка в массиве
    let valuesMap = new Map();

    // проходимся по каждому элементу массива...
    array.forEach(elem => {

        // ... и помещаем значение в карту, увеличивая, при необходимости, значение счетчика
        valuesMap.set(elem, valuesMap.has(elem) ? valuesMap.get(elem) + 1 :  1);
    });

    // сортируем полученный массив объектов "{'строка', число}" в порядке убывания частоты присутствия в исходном массиве
    let arr =  [...valuesMap.entries()].sort((a, b) => b[1] - a[1]);

    // возвращаем массив, состоящий только из первых элементов
    return arr.map(value => value[0]);
}

Пример использования:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS - Сортировка дупликатов</title>
</head>
<body>
    <script src="sort_duplicated.js"></script>
    <script>

        let fruits = ['banana', 'fruit', 'apple', 'apple', 'orange', 'banana', 'orange', 'banana', 'banana', 'apple'];
        let sortedFruits = sortByCount(fruits);

        console.log(fruits);
        console.log(sortedFruits);

    </script>
</body>
</html>

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.