Сортировка массива по атрибуту
Теперь я просто получаю первый 3 объекта массива и накладываю на них карту:
<ul className="ItemSearchList">
{
champions.slice(0,3).map(function(champ){
return (
<li key={champ.id} >
<div className="media">
<div className="media-left">
<a href="#">
<img className="media-object" src={"http://ddragon.leagueoflegends.com/cdn/5.2.1/img/champion/" + champ.key + ".png"} />
</a>
</div>
<div className="media-body" >
<h4 className="media-heading">{champ.name}</h4>
<div>
something
</div>
</div>
</div>
</li>
)
})
}
</ul>
Каждый champ
имеет атрибут level
(champ.level).
Как я могу сортировать свой вывод на champ.level
descending
и срезать первые 3?
Ответы
Ответ 1
Используйте Array.prototype.sort()
с пользовательской функцией сравнения, чтобы сначала выполнить сортировку по убыванию:
champions.sort(function(a, b) { return b.level - a.level }).slice(...
Еще лучше с ES6:
champions.sort((a, b) => b.level - a.level).slice(...
Ответ 2
Напишите свою собственную функцию сравнения:
function compare(a,b) {
if (a.level < b.level)
return -1;
if (a.level > b.level)
return 1;
return 0;
}
Чтобы использовать его:
champions.sort(compare).slice(0,3).map(function(champ) {