#javascript #arrays #sorting
#javascript #массивы #сортировка
Вопрос:
Моя таблица / массив создана на Javascript и не жестко закодирована в HTML.
Я пытаюсь отфильтровать и вернуть таблицу на основе любого, кто посетил Великобританию.
Я хочу разместить функцию с параметрами (кандидаты, страны).
var people = [
{ name: "Matt", countries: ["UK", "USA", "Russia"] },
{ name: "Simon", countries: ["Canada", "China"] },
{ name: "Ben", countries: ["UK", "India"] },
{ name: "Katie", countries: ["UK", "China"] },
{ name: "Omar", countries: ["Canada", "China"] },
{ name: "Simon", countries: ["India", "China", "USA"] },
];
Я пытался
people.filter(person=>person.countries.includes('UK'))
Однако таблица не является динамической и не изменяется, чтобы отразить это на моей веб-странице, если я использую этот код, вместо этого он просто возвращает исходный массив ‘people’. Почему этот подход не работает?
Комментарии:
1.
people.filter(person=>person.countries.includes('UK'))
2. «Я пытаюсь фильтровать» … покажите нам, что вы на самом деле пробовали. Stackoverflow — это не бесплатный сервис для написания кода. Цель состоит в том, чтобы вы показали свои попытки решить проблемы самостоятельно, а другие помогали, когда код работает не так, как ожидалось
3. Это работает — однако, когда я console.log (people) после этого кода, он по-прежнему возвращает исходный массив вместо нового массива, который должен включать только тех людей, которые были в Великобритании
4.
filter
возвращает новый массив, он не изменяет исходный. Попробуйтеpeople = people.filter(…)
.
Ответ №1:
Я думаю, это то, что вы ищете:
const people = [
{ name: "Matt", countries: ["UK", "USA", "Russia"] },
{ name: "Simon", countries: ["Canada", "China"] },
{ name: "Ben", countries: ["UK", "India"] },
{ name: "Katie", countries: ["UK", "China"] },
{ name: "Omar", countries: ["Canada", "China"] },
{ name: "Simon", countries: ["India", "China", "USA"] },
];
const filterCandidates = (candidates, country) =>
candidates.filter(({ countries }) => countries.includes(country));
Результат:
[{«name»:»Matt»,»countries»:[«UK»,»USA»,»Russia»]},{«name»:»Ben»,»countries»:[«UK»,»India»]},{«name»:»Katie»,»countries»:[«UK»,»China»]}]