javascript - 如何在 JavaScript 中访问嵌套数组中的属性?
问题描述
我有一个嵌套数组存储在一个 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": ""
}
}
},
您可以忽略那里的其他实际语言,它不相关,它只是一个字符串。这只是其中的一小部分,它是一个相当大的文件。
我设法很好地访问了每个属性,然后重新分配了新属性,以便我可以在我的 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 循环之外。
顺便说一句,一切都可以正常工作,只是能够访问循环之外的属性。内容确实写到我需要的地方等等。
我有点新手所以任何帮助将不胜感激!
解决方案
只需执行map
以items
获得subtitle
s:
const allSubtitles = items.map(e => e.subtitle);
推荐阅读
- unity3d - 球在管中与刚体一起移动
- sql - 我们可以同时从 2 个表中选择数据吗
- javascript - 降低水平滚动中 div 的不透明度是否部分可见
- botframework - Bot Framework V4 MS 团队渠道和 GDPR
- linux - 如何在使用 find 命令时仅删除文件名
- android - 无法将 .aab/apk 文件上传到 Play 商店
- google-sheets - Google Sheets - 如何根据另一个单元格中的匹配值连接范围?
- ios - 从应用内的 Firebase In-App-Messaging 打开 url
- javascript - Jquery:仅查找一个最近的匹配元素
- android - 从服务发送的通知中打开我的 kivy 应用程序