【问题标题】:JS How to access specific array value based on another valueJS如何根据另一个值访问特定的数组值
【发布时间】:2021-12-03 15:48:05
【问题描述】:

我正在尝试对数组进行字符串化并获取另一个值等于 EFHK_ATIS 的特定值:

const atisData = JSON.parse(req.responseText);
document.getElementById("metar").innerHTML = JSON.stringify(atisData.atis[??].atis_code);

如果我用数字替换问号,它显然有效,但它返回错误元素的 atis_code,因为顺序一直在变化。如何替换问号以导航到呼号等于“EFHK_ATIS”的正确值?

这是 JSON 文件的示例。我想要呼号为 EFHK_ATIS 的 atis_code。

 "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"
    },
...

【问题讨论】:

标签: javascript arrays json stringify


【解决方案1】:

Filter method 就是你要找的东西

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)

【讨论】:

  • 谢谢!似乎合法,但是我收到错误“未捕获的 TypeError:atisData.filter 不是 Object.success 的函数”。是否可以将代码放在 $.getJSON('url', function(data) { }); ?或者这就是问题所在。过滤器似乎是唯一的问题。
  • @OttoTuhkunen 在您的示例代码中,atisData 是一个 JSON 对象,但 filter() 方法适用于数组。所以你需要在atisData.atis 上调用它,这是一个数组。
猜你喜欢
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
相关资源
最近更新 更多