【问题标题】:How can I access a property inside a nested array in JavaScript? [duplicate]如何在 JavaScript 中访问嵌套数组中的属性? [复制]
【发布时间】:2019-08-25 14:29:15
【问题描述】:

我有一个像这样存储在 JSON 文件中的嵌套数组...

{
  "shabadinfo": {
    "id": "1",
    "pageno": "1",
    "source": {
      "id": "G",
      "gurmukhi": "sRI gurU gRMQ swihb jI",
      "unicode": "ਸ੍ਰੀ ਗੁਰੂ ਗ੍ਰੰਥ ਸਾਹਿਬ ਜੀ",
      "english": "Sri Guru Granth Sahib Ji",
      "pageno": "1"
    },
    "raag": {
      "id": "1",
      "gurmukhi": "jp",
      "unicode": "ਜਪ",
      "english": "Jap",
      "startang": null,
      "endang": null,
      "raagwithpage": "Jap (1-8)"
    },
    "writer": {
      "id": "1",
      "gurmukhi": "mÚ 1",
      "unicode": null,
      "english": "Guru Nanak Dev Ji"
    }
  },
  "navigation": {
    "next": "2"
  },
  "gurbani": [{
      "shabad": {
        "id": "1",
        "gurbani": {
          "gurmukhi": "<> siq nwmu krqw purKu inrBau inrvYru Akwl mUriq AjUnI sYBM gur pRswid ]",
          "unicode": "ੴ ਸਤਿ ਨਾਮੁ ਕਰਤਾ ਪੁਰਖੁ ਨਿਰਭਉ ਨਿਰਵੈਰੁ ਅਕਾਲ ਮੂਰਤਿ ਅਜੂਨੀ ਸੈਭੰ ਗੁਰ ਪ੍ਰਸਾਦਿ ॥",
          "searchInputFirstEnglish": "<>snkpnnAmAsgp",
          "searchInputFirstGurmukhi": "ੴਸਨਕਪਨਨਅਮਅਸਗਪ"
        },
        "larivaar": {
          "gurmukhi": "<>siqnwmukrqwpurKuinrBauinrvYruAkwlmUriqAjUnIsYBMgurpRswid]",
          "unicode": "ੴਸਤਿਨਾਮੁਕਰਤਾਪੁਰਖੁਨਿਰਭਉਨਿਰਵੈਰੁਅਕਾਲਮੂਰਤਿਅਜੂਨੀਸੈਭੰਗੁਰਪ੍ਰਸਾਦਿ॥"
        },
        "translation": {
          "english": {
            "ssk": "One Universal Creator God. The Name Is Truth. Creative Being Personified. No Fear. No Hatred. Image Of The Undying, Beyond Birth, Self-Existent. By Guru's Grace ~"
          },
          "punjabi": {
            "bms": {
              "gurmukhi": "Akwl purK ie`k hY, ijs dw nwm 'hoNd vwlw' hY jo isRStI dw rcnhwr hY, jo sB ivc ivAwpk hY, BY qoN rihq hY, vYr-rihq hY, ijs dw srUp kwl qoN pry hY, (Bwv, ijs dw srIr nws-rihq hY), jo jUnW ivc nhIN AwauNdw, ijs dw pRkwS Awpxy Awp qoN hoieAw hY Aqy  jo siqgurU dI ikrpw nwl imldw hY[",
              "unicode": "ਅਕਾਲ ਪੁਰਖ ਇੱਕ ਹੈ, ਜਿਸ ਦਾ ਨਾਮ 'ਹੋਂਦ ਵਾਲਾ' ਹੈ ਜੋ ਸ੍ਰਿਸ਼ਟੀ ਦਾ ਰਚਨਹਾਰ ਹੈ, ਜੋ ਸਭ ਵਿਚ ਵਿਆਪਕ ਹੈ, ਭੈ ਤੋਂ ਰਹਿਤ ਹੈ, ਵੈਰ-ਰਹਿਤ ਹੈ, ਜਿਸ ਦਾ ਸਰੂਪ ਕਾਲ ਤੋਂ ਪਰੇ ਹੈ, (ਭਾਵ, ਜਿਸ ਦਾ ਸਰੀਰ ਨਾਸ-ਰਹਿਤ ਹੈ), ਜੋ ਜੂਨਾਂ ਵਿਚ ਨਹੀਂ ਆਉਂਦਾ, ਜਿਸ ਦਾ ਪ੍ਰਕਾਸ਼ ਆਪਣੇ ਆਪ ਤੋਂ ਹੋਇਆ ਹੈ ਅਤੇ  ਜੋ ਸਤਿਗੁਰੂ ਦੀ ਕਿਰਪਾ ਨਾਲ ਮਿਲਦਾ ਹੈ।"
            }
          },
          "spanish": "Un sólo Creador Universal, Verdad es Su Nombre. Creativa Su Personalidad. Sin Miedo, sin Venganza. Inmortal, Sin Principio, Sin Fin, Auto Existente. Por la Gracia del Verdadero Guru."
        },
        "transliteration": "ikOankaar sat naam karataa purakh nirabhau niravair akaal moorat ajoonee saibha(n) gur prasaadh ||",
        "shabadid": "1",
        "pageno": "1",
        "lineno": "1",
        "updated": "2019-01-31 21:40:51",
        "firstletters": {
          "ascii": ",060,115,110,107,112,110,110,065,109,065,115,103,112,",
          "english": "<>snkpnnAmAsgp"
        },
        "bisram": {
          "sttm": null,
          "igurbani1": null,
          "igurbani2": null
        }
      }
    },
{
      "shabad": {
        "id": "2",
        "gurbani": {
          "gurmukhi": "] jpu ]",
          "unicode": "॥ ਜਪੁ ॥",
          "searchInputFirst": "j"
        },
        "larivaar": {
          "gurmukhi": "]jpu]",
          "unicode": "॥ਜਪੁ॥"
        },
        "translation": {
          "english": {
            "ssk": "Name of the Composition, \"Jup\". Chant And Meditate:"
          },
          "punjabi": {
            "bms": {
              "gurmukhi": "ies swrI bwxI dw nwm 'jpu' hY [",
              "unicode": "ਇਸ ਸਾਰੀ ਬਾਣੀ ਦਾ ਨਾਮ 'ਜਪੁ' ਹੈ ।"
            }
          },
          "spanish": "Canta y medita en esto,"
        },
        "transliteration": "|| jap ||",
        "shabadid": "1",
        "pageno": "1",
        "lineno": "3",
        "updated": "2019-01-31 21:40:51",
        "firstletters": {
          "ascii": ",106,",
          "english": "j"
        },
        "bisram": {
          "sttm": "",
          "igurbani1": "",
          "igurbani2": ""
        }
      }
    },

你可以忽略那里的其他实际语言,它不相关,它只是一个字符串。 这只是一个简短的sn-p,它是一个相当大的文件。

我已经成功地访问了每个属性,然后重新分配了新属性,以便我可以在我的 javascript 中引用它们。

for (var iD = 0; iD < data.gurbani.length; iD++) {
    items.push({
      shabadId: data.gurbani[iD].shabad.shabadid,
      id: data.gurbani[iD].shabad.id,
      title: data.gurbani[iD].shabad.gurbani.unicode,
      subtitle: data.gurbani[iD].shabad.translation.english.ssk,
      searchInput: data.gurbani[iD].shabad.firstletters.english
      // data.gurbani[iD].shabad.gurbani.searchInputFirstGurmukhi
    });

我的问题是,我现在需要访问,例如,“副标题”属性(可以是其中任何一个),以便现在可以读取“副标题”下的所有字符串/对象,这样我就可以在 for 循环之外对它们做其他事情。

顺便说一句,一切都可以正常工作,只是能够访问循环之外的属性。内容确实写到我需要的地方等等。

我有点新手所以任何帮助将不胜感激!

【问题讨论】:

  • 喜欢items[0].subtitle?不确定我是否理解问题所在。看来您已经知道如何访问嵌套属性了。
  • 没关系,下面的答案解决了我的问题

标签: javascript arrays object multidimensional-array


【解决方案1】:

只需对items执行map即可得到subtitles:

const allSubtitles = items.map(e => e.subtitle);

【讨论】:

  • 非常棒,非常感谢!
  • 没问题@InderbirSingh,总是乐于提供帮助。
猜你喜欢
  • 2017-06-27
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
相关资源
最近更新 更多