簡體   English   中英

從 Javascript 中的字典中讀取值

[英]Reading values from dictionary in Javascript

我正在嘗試使用 Javascript 從 ZOTERO 中選定的書目數據集合中讀取標簽。

對於那些不熟悉 ZOTERO 的人:它有一個內置的“運行 JS”面板,可以直接處理在獨立版本中選擇/標記的項目。

這是我用來從選定文件夾讀取數據並訪問標簽的腳本:

var s = new Zotero.Search();
s.libraryID = ZoteroPane.getSelectedLibraryID();

var itemIDs = await s.search();

for (itemID of itemIDs) {
       item = Zotero.Items.get(itemID);
       return item;
       itemTAG = item.getTags();
       return itemTAG;
    }

當我調用return itemIDs; for循環之前,我得到了 4943 key:value對,它正確地反映了我的集合中的項目數。

結構如下所示:

[
    "0": 21848
    "1": 21849
    "2": 21850
    "3": 21851
    "4": 21852
    "5": 21853
    "6": 21854
    "7": 21855
    "8": 21856
    "9": 21857
    "10": 21858
]

我真正想做的是遍歷所有 ID 以獲取每個項目的書目數據並返回標簽。

這就是為什么我首先嘗試了for/in 循環,但這不起作用,據說是因為我沒有正確調用key:value對(對應於 Python 中的字典?)。

但是,上述for/of循環至少對第一項(項“0”)有效,並返回以下數據:

{
    "key": "BDSIJ5P4",
    "version": 1085,
    "itemType": "book",
    "place": "[Augsburg]",
    "publisher": "[Gabriel Bodenehr]",
    "date": "[circa 1730]",
    "title": "Constantinopel",
    "numPages": "1 Karte",
    "creators": [
        {
            "firstName": "Gabriel",
            "lastName": "Bodenehr",
            "creatorType": "author"
        }
    ],
    "tags": [
        {
            "tag": "Europa"
        }
    ],
    "collections": [
        "DUW2PJDP"
    ],
    "relations": {
        "dc:replaces": [
            "http://zotero.org/groups/2289797/items/ZB5J5VZK"
        ]
    },
    "dateAdded": "2019-02-13T17:27:29Z",
    "dateModified": "2020-03-23T13:13:13Z"
}

所以我的兩個問題是:

  1. 如何創建一個適當的 for/in 循環來為每個項目檢索這些相同的數據?
  2. 我怎樣才能只返回標簽? 似乎item.getTags() [我使用的類似於文檔中的getNotes()示例] 可能不是有效的 function。 一般而言,這是否特定於 Zotero 或 Javascript?

使用map()在每個數組元素上調用 function 並返回所有結果的數組。

return itemIDs.map(itemID => Zotero.Items.get(itemID).getTags())

暫無
暫無

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

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