Сортировка массива по значениям ключей объекта
Ребята, нужна ваша помощь. Я застрял. Два вопроса:
Есть массив вида:
const countries = ["Turkey", "Brazil", "Germany", "Canada", "Norway", "Netherlands", "Denmark", "United Kingdom", "Iran", "France", "Denmark", "France", "France", "Denmark", "Brazil", "United States", "Brazil", "United States", "United Kingdom", "Denmark", "Germany"]
Нужно сделать сортировку в объект массивов по национальности:
const nationalities = {american: [], australian: [], brazilian: [], british: [], canadian: [], danish: [], dutch: [], finnish: [],
french: [], german: [], iranian: [], irish: [], newZealander: [], norwegian: [], spanish: [], swiss: [], turkish: []};
получить объект:
const nationalities = {american:['United States', 'United States'], australian:['Australian'], brazilian:['Brazil', 'Brazil', 'Brazil'], british:['United Kingdom']...}
- На основании пользовательского ввода вывести только нужный массив(массивы) из объекта:
Пример:
Выбран 'American' -> показать только массив american остальные скрыть,
Выбрано 'British', 'Canadian' -> показать только british и canadian
Буду признателен за любую помощь.
Ответы (1 шт):
касательно задачи 1:
для начала у вас долен быть словарь соответствий:
dict = {
"united states": "american",
"russia": "russian"
};
затем вы проходите по массиву countries и проверяете соответствия:
let nationalities = {};
for (country of countries) {
const nation = dict[country];
nationalities[nation].push(nation);
}
только надо добавить соответствующие проверки на отсутствие данных в словаре и массиве
касательно задачи 2:
примените фильтр в массиву nationalities, не совсем только понял - нужно по части от слова искать или доступны слова целиком
хотя если nationalities не объект, то можно просто пройтись по элементам и сформировать новый массив
let filtered_nationalities = {};
for (nation of Object.keys(nationalities)) {
if (choice.includes(nation)) {
filtered_nationalities[nation] = nationalities[nation];
}
}
что-то на подобии этого
