簡體   English   中英

從 JavaScript 中的嵌套數組中獲取值

[英]Get values from a nested array in JavaScript

鑒於這個數組,我從 XHR 請求中得到:

[
 {
  "dinnerID": "h1799-05-20a",
  "date": "20 May 1799",
  "note": "<note xmlns=\"http://www.tei-c.org/ns/1.0\"/>",
  "diners": {
    "name": [
      [
        {
          "mentioned": null,
          "slept": "no",
          "cancelled": null,
          "person": "Miss Caroline Fox"
        }
      ],
      [
        {
          "mentioned": null,
          "slept": "no",
          "cancelled": null,
          "person": "Lady Lucy Anne FitzGerald"
        }
      ],
      [
        {
          "mentioned": null,
          "slept": "no",
          "cancelled": null,
          "person": "Dr ??? Drew"
        }
      ],
      [
        {
          "mentioned": null,
          "slept": "no",
          "cancelled": null,
          "person": "Lady Elizabeth Vassall-Fox"
        }
      ],
      [
        {
          "mentioned": null,
          "slept": "no",
          "cancelled": null,
          "person": "Lord Richard Vassall-Fox"
        }
      ]
    ]
  }
 }
 {
  "dinnerID": "h1799-05-21a",
  "date": "21 May 1799",

 }
]

我如何獲得姓名( person )列表,並使用其他mentioendsleptcancelled

這個:

for (var dinner of result) {
                    
    let diners = dinner.diners.name.person.join(", ")
}

返回一個Uncaught TypeError: dinner.diners.name.person is undefined錯誤Uncaught TypeError: dinner.diners.name.person is undefined錯誤。 我想返回類似的東西

Miss Caroline Fox (slept)(mentioned)(cancelled), Lady Lucy Anne FitzGerald (slept)(mentioned)(cancelled) etc.

我附上了我的console.log(result)的截圖。

控制台日志

如果我們簡化數據,我們會得到類似

{
  "diners": {
    "name": [
      [
        {
          "mentioned": null,
          "slept": "no",
          "cancelled": null,
          "person": "Miss Caroline Fox"
        }
      ],
      ...
  }
}

這里我們看到diners是一個Object ,在name鍵上保存一個數組。 由於每個diner都是一個對象,在一個額外的數組中,我們還需要以該對象為目標。

要獲得欲望輸出,請使用類似的東西;

 const result = {"dinnerID": "h1799-05-20a", "date": "20 May 1799", "note": "<note xmlns=\\"http://www.tei-c.org/ns/1.0\\"/>", "diners": {"name": [[{"mentioned": null, "slept": "no", "cancelled": null, "person": "Miss Caroline Fox"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Lucy Anne FitzGerald"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Dr ??? Drew"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lady Elizabeth Vassall-Fox"} ], [{"mentioned": null, "slept": "no", "cancelled": null, "person": "Lord Richard Vassall-Fox"} ] ] } }; const res = result.diners.name.map(diner => { let obj = diner[0]; return `${obj.person} (${obj.slept}) (${obj.mentioned}) (${obj.cancelled})`; }); console.log(res.join(' '));

Miss Caroline Fox (no) (null) (null) Lady Lucy Anne FitzGerald (no) (null) (null) Dr ??? Drew (no) (null) (null) Lady Elizabeth Vassall-Fox (no) (null) (null) Lord Richard Vassall-Fox (no) (null) (null)

dinner.diners.name是一個二維對象數組。 您可以將其展平,然后通過它進行映射以獲取所有名稱。

result.forEach(dinner => {
    let diners = dinner.diners.name.flat().map(d => d.person).join("");
    console.log(diners);
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM