在 Angular 应用程序中访问 JSON 数据(多个嵌套数组)


如何

从给定对象访问'行'数据?这是指向 api 的链接 -https://sportsbook.draftkings.com/api/odds/v1/leagues/3/offers/gamelines.json

{
    "events": [{
        "id": 153502679,
        "name": "Green Bay Packers @ Chicago Bears",
        "homeTeamName": "CHI Bears",
        "awayTeamName": "GB Packers",
        "startDate": "2019-09-06T00:20:00.0000000Z",
        "offers": [{
            "id": "1-2160521227",
            "label": "Point Spread",
            "outcomes": [{
                "id": "1-2568051855",
                "label": "GB Packers",
                "line": "+3.5000",
                "oddsAmerican": "-110",
                "oddsDecimal": 1.9100,
                "oddsFractional": "10/11",
                "participant": "GB Packers"
            },

我正在得到

<td>{{data.name }}</td>
        <td>{{data.homeTeamName }}</td>
        <td>{{data.awayTeamName}}</td>
        <td>{{data.startDate }}</td>
        <!--<td>{{data.offers[1].label }}</td>-->
        <td>{{data.offers.outcomes[2].line }}</td>

尝试了上面的代码来访问结果对象中的行,它给了我以下错误

ERROR TypeError: Cannot read property '2' of undefined

提供的 API 响应包含 3 个嵌套数组。因此,在访问其值时必须考虑它们。根据以下数组中的项目数量,解决方案会有所不同。在您的示例中,您正在访问数组"事件"、"优惠"、"结果"的第一项的值。

在这种特定情况下,您可以尝试

<td>{{data.events[0].offers[0].outcomes[0].line}} </td>

您似乎没有访问选件数组中的数据。

请尝试以下代码来访问事件,然后访问选件,然后访问结果:

data.events[0].offers[0].outcomes[0].line

希望它有效!

考虑到每个嵌套的 aray 中只有一个项目,您可以访问line

let data = {
    "events": [{
        "id": 153502679,
        "name": "Green Bay Packers @ Chicago Bears",
        "homeTeamName": "CHI Bears",
        "awayTeamName": "GB Packers",
        "startDate": "2019-09-06T00:20:00.0000000Z",
        "offers": [{
            "id": "1-2160521227",
            "label": "Point Spread",
            "outcomes": [{
                "id": "1-2568051855",
                "label": "GB Packers",
                "line": "+3.5000",
                "oddsAmerican": "-110",
                "oddsDecimal": 1.9100,
                "oddsFractional": "10/11",
                "participant": "GB Packers"
            }]
        }]
    }]
}
console.log(data.events[0].offers[0].outcomes[0].line);

如果每个嵌套数组中有 n 个对象,您可以执行

let data = {
    "events": [{
        "id": 153502679,
        "name": "Green Bay Packers @ Chicago Bears",
        "homeTeamName": "CHI Bears",
        "awayTeamName": "GB Packers",
        "startDate": "2019-09-06T00:20:00.0000000Z",
        "offers": [{
            "id": "1-2160521227",
            "label": "Point Spread",
            "outcomes": [{
                "id": "1-2568051855",
                "label": "GB Packers",
                "line": "+3.5000",
                "oddsAmerican": "-110",
                "oddsDecimal": 1.9100,
                "oddsFractional": "10/11",
                "participant": "GB Packers"
            }]
        }]
    }]
}
data['events'].forEach(event => {
    event.offers.forEach(offer => {
        offer.outcomes.forEach(outcome => {
          console.log(outcome.line);
        });
    });
});

最新更新