Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.01.2019, 14:00
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Как правильно отсортировать свойства с удалением дубликатов (native js)?
Здравствуйте. Подскажите, пожалуйста, как правильно решить следующую задачу. У меня есть следующий массив.
const arr = [
    { id: 1, name: 'Alexey', country: 'Moscow' },
    { id: 2, name: 'Mikhail', country: 'Tula' },
    { id: 3, name: 'Vladimir', country: 'Moscow' },
    { id: 4, name: 'Andrey', country: 'Vladivostok' },
    { id: 5, name: 'Andrey', country: 'Moscow' },
    { id: 6, name: 'Peter', country: 'Vladivostok' },
    { id: 7, name: 'Sergey', country: 'Tula' }
]

Мне необходимо отсортировать его следующим образом:
const arr = [
    { id: 1, country: 'Moscow' },
    { id: 2, country: 'Tula' },
    { id: 3, country: 'Vladivostok' }
]
Ответить с цитированием
  #2 (permalink)  
Старый 23.01.2019, 14:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

s24344,
однотипные вопросы пишите в одной теме ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
</head>

<body>
<ul class="list"></ul>
 <script>
function fn(arr) {
    let obj = arr.reduce(function(obj, {country}) {
        obj[country] = (obj[country]||0) + 1;
        return obj;
        }, {});
    return Object.keys(obj).sort((a,b) => obj[b] - obj[a] ||( a > b ? 1 : -1)).map((country, i)=>({id : ++i, country}))
};

const arr = [
    { id: 1, name: 'Alexey', country: 'Moscow' },
    { id: 2, name: 'Mikhail', country: 'Tula' },
    { id: 3, name: 'Vladimir', country: 'Moscow' },
    { id: 4, name: 'Andrey', country: 'Vladivostok' },
    { id: 5, name: 'Andrey', country: 'Moscow' },
    { id: 6, name: 'Peter', country: 'Vladivostok' },
    { id: 7, name: 'Sergey', country: 'Tula' }
]

,
arrFilter = fn(arr),
html = arrFilter.reduce(function(html, el) {
 return html +=  '<li class="item" ><div>' + el.id + ' ' +el.country+'</div></li>'
},"");
document.querySelector(".list").innerHTML = html;
</script>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 23.01.2019, 17:46
Профессор
Отправить личное сообщение для s24344 Посмотреть профиль Найти все сообщения от s24344
 
Регистрация: 12.08.2015
Сообщений: 206

Большое спасибо за помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BackEnd/FrontEnd Developer (Native JS) Abab Работа 0 25.12.2016 10:56
iframe как правильно динамически встаить с помощью js syegorius Events/DOM/Window 7 05.01.2012 10:24
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
Как правильно прописать свой код в .js Всеми_Любимый Элементы интерфейса 6 23.02.2010 21:34
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20