Estoy tratando de clasificar una matriz y obtener el valor específico donde otro valor es igual a EFHK_ATIS:
const atisData = JSON.parse(req.responseText); document.getElementById("metar").innerHTML = JSON.stringify(atisData.atis[??].atis_code);Si reemplazo los signos de interrogación con un número, obviamente funciona, pero devuelve el atis_code del elemento incorrecto, ya que el orden cambia todo el tiempo. ¿Cómo puedo reemplazar los signos de interrogación para navegar al valor correcto donde el indicativo es igual a "EFHK_ATIS"?
Aquí hay una muestra del archivo JSON. Quiero el atis_code donde el indicativo es EFHK_ATIS.
"atis": [ { "cid": xxx, "name": "Example Name", "callsign": "ZBAA_ATIS", "frequency": "199.998", "facility": 4, "rating": 2, "server": "SINGAPORE", "visual_range": 0, "atis_code": "F", "text_atis": [ "ZBAA INFORMATION F, 1100 UTC , DEPARTURE RUNWAY 01,36R,36L,", "LANDING RUNWAY 01,36L, EXPECT ILS APPROACH, RUNWAY 01,36L, WIND", "360 DEGREES AT 6 M/S , CAVOK TEMPERATURE 14 DEG C , DEWPOINT -6", "DEG C , QNH 1030 HPA , ADVISE ON INITIAL CONTACT YOU HAVE", "INFORMATION F, AND CONFIRM YOU WILL IMPLEMENT RNAV PROCEDURES." ], "last_updated": "2021-10-15T11:43:52.3645031Z", "logon_time": "2021-10-15T11:30:24.328892Z" }, { "cid": yyy, "name": "Name Example", "callsign": "EFHK_ATIS", "frequency": "135.070", "facility": 4, "rating": 4, "server": "GERMANY", "visual_range": 0, "atis_code": "W", "text_atis": [ "THIS IS HELSINKI-VANTAA ARRIVAL AND DEPARTURE INFORMATION W", "AT TIME 1120 EXPECT ILS APPROACH ARRIVAL RUNWAY 15", "DEPARTURE RUNWAY 22R TRANSITION LEVEL 70", "HEAVY BIRD ACTIVITY IN VICINITY OF HELSINKI-VANTAA WIND 160", "DEGREES 15 KNOTS VISIBILITY 3000 METERS LIGHT RAIN BROKEN 700", "FEET TEMPERATURE 9 DEW POINT 9 QNH 994 BECOMING VISIBILITY 10", "KILOMETERS ADVISE ON INITIAL CONTACT YOU HAVE INFORMATION W" ], "last_updated": "2021-10-15T11:45:03.875018Z", "logon_time": "2021-10-15T11:30:27.9814385Z" }, ...El método de filtro es lo que estás buscando.
let atis_data = [ {"callsign":"ZBAA_ATIS", "atis_code": "123"}, {"callsign":"ABCD", "atis_code": "abcd"} ] let filtered = atis_data.filter(data => data["callsign"] == "ZBAA_ATIS") let result = filtered.map(data => data["atis_code"]) console.log(result)