У меня есть рабочая демонстрация CodePen здесь: https://codepen.io/JosephAllen/pen/vYmQpWL?editors=0010
Эта демонстрация:
- Выбирает пользователей из API
- Сортирует список на основе свойства "точки"
- А затем отображает этот отсортированный список, используя индекс в качестве «ранга». Другими словами, если ваш индекс равен нулю, вы на первом месте.
Есть поле ввода для поиска и фильтрации списка, но фильтрация массива создает новый индекс для каждого пользователя, что разрушает всю идею ранга.
Как сохранить рейтинг и функцию поиска без создания новых индексов для пользователей?
Если бы я был автором API, я бы просто включил ранг в качестве свойства, но это не так.
Моя функция выборки:
getUsers() {
fetch(`https://trafficthinktank.com/wp-json/mjtw/v1/community`)
.then((res) => res.json())
.then((data) => {
this.isLoading = false;
this.users = data.sort((a, b) => b.points - a.points);
// this.users = this.users.map(user => ({ visible: true, ...user }));
console.log(this.users);
});
0;
}
Моя функция фильтра:
get filteredUsers() {
if (this.search === "") {
return this.users;
}
return this.users.filter((item) => {
return item.name.toLowerCase().includes(this.search.toLowerCase());
});
}