Добрый день, у меня есть данные в таком формате:
[
{
"name": "Alexandra Palace",
"code": "AAP",
"lat": 51.59793,
"lon": -0.12023
},
{
"name": "Achanalt",
"code": "AAT",
"lat": 57.60958,
"lon": -4.91386
},
{
"name": "Aberdare",
"code": "ABA",
"lat": 51.71506,
"lon": -3.4431
}
]
Я хочу найти элемент с code: ABA пишу: locations.map((key) => key.code).indexOf('ABA') > -1. Выдает true, пока все ок.
После того как нашел этот code в данных мне нужно вывести name этого code (Должно вывести Aberdare). Подскажите как это сделать?
Не используя indexOf().
var found = locations.find((loc) => {
return loc.code === "ABA";
});
var res = found ? found.name : undefined;
Ответ (name) будет содержаться в переменной res. Если элемента с кодом "ABA" вообще не было найдено, то в res будет undefined. undefined также будет в том случае, если элемент по коду "ABA" найден, но у него нет поля name.
Рабочий пример:
var locations = [
{
"name": "Alexandra Palace",
"code": "AAP",
"lat": 51.59793,
"lon": -0.12023
},
{
"name": "Achanalt",
"code": "AAT",
"lat": 57.60958,
"lon": -4.91386
},
{
"name": "Aberdare",
"code": "ABA",
"lat": 51.71506,
"lon": -3.4431
}
]
var found = locations.find((loc) => {
return loc.code === "ABA";
});
var res = found ? found.name : undefined;
console.log(res);
После применения map к массиву в выходном массиве у вас остаются только значения полей code
const locations = [
{
"name": "Alexandra Palace",
"code": "AAP",
"lat": 51.59793,
"lon": -0.12023
},
{
"name": "Achanalt",
"code": "AAT",
"lat": 57.60958,
"lon": -4.91386
},
{
"name": "Aberdare",
"code": "ABA",
"lat": 51.71506,
"lon": -3.4431
}
];
const m = locations.map((key) => key.code);
console.log(m);
можно заменить map например на filter, в котором функция выполняется так же для каждого элемента массива, возвращая результат логической операции. filter создает новый массив и помещает в него все элементы массива источника для которого функция вернула true:
const locations = [
{
"name": "Alexandra Palace",
"code": "AAP",
"lat": 51.59793,
"lon": -0.12023
},
{
"name": "Achanalt",
"code": "AAT",
"lat": 57.60958,
"lon": -4.91386
},
{
"name": "Aberdare",
"code": "ABA",
"lat": 51.71506,
"lon": -3.4431
}
];
const res = locations.filter(v => {
return v.code === "ABA";
})[0];
console.log(res.code);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости