簡體   English   中英

在動態javascript對象(鍵/值對)中創建動態數組

[英]creating dynamic array in a dynamic javascript object (key/value pair)

我以為這是數據如何查找具有唯一ID(在下面的示例中為1和2)的每個查詢操作的方式。

var finalData = {
    queryData: {
        "1": { // here "1" will be the auto-incrementing query operation id generated from somewhere
            jiraList: ["abc-123", "bcd-234"],
            jiraDetail: [
                {
                    jiraKey: "abc-123",
                    status: "Closed"
                },
                {
                    jiraKey: "bcd-234",
                    status: "Open"
                }
            ]
        },
        "2": {
            jiraList: ["xyz-987", "wxy-876"],
            jiraDetail: [
                {
                    jiraKey: "xyz-987",
                    status: "Open"
                },
                {
                    jiraKey: "wxy-876",
                    status: "Closed"
                }
            ]
        }
    }
};

我有一個函數,可以接受查詢的唯一ID和Jira列表(已經是數組):

var addJiraList = function (key, jiraList) {
    // sample params will be key: 1, jiraList: ['abc-123', 'bcd-234']
    finalData.queryData[key] = {jiraList: jiraList};
};

因此,上面的函數在finalData.queryData創建一個鍵值對(如果不存在),並且如果存在,它將添加/更新具有所需值的jiraList 這可行。

我還有另一個函數,可以接受查詢的唯一ID和單個jiraDetail,它是:

var addJiraData = function (queryKey, extractedData) {
    // sample params will be queryKey: 1, extractedData: { jiraKey: "abc-123", status: "Closed" }
    finalData.queryData[queryKey]["jiraDetail"].push(extractedData);
};

我想推extractedData來作為數組參數finalData.queryData.2.jiraDetail

現在的問題是finalData.queryData.<queryId>是動態的, jiraDetail是其中的一個數組。 因此,這是第一次,如果queryKey is 1 ,而extractedData is {something} ,我將如何將一個條目extractedData添加到甚至沒有創建的queryKey數組(jiraDetail)中。

目前正在拋出finalData.queryData[queryKey] is undefined錯誤,這是有效的,因為我無法在尚未創建的對象內添加。

我心中的解決方案是檢查finalData.queryData[queryKey] is undefined以及是否未定義,然后首先在其中創建帶有空jiraDetail數組的對象,以使下一行不會引發未定義的錯誤。

finalData.queryData[queryKey]["jiraDetail"].push(extractedData);

必須有一些更好的方法可以完成,而我目前無法思考和搜索。 我想知道您將如何處理這種情況?

這是文件的鏈接,該鏈接將根據我在這里得到的答案進行更新。

https://github.com/sunilrebel/spann-jira/blob/master/lib/storageSystem.js

您確實需要檢查鍵是否存在於finalData.queryData以及是否沒有創建。 看一下這個解決方案:

var addJiraData = function (queryKey, extractedData) {
    if (!finalData.queryData[queryKey] || !finalData.queryData[queryKey]["jiraDetail"])
    {
        //one of the objects isn't present, let's create it.
        !finalData.queryData[queryKey] ? addJiraList(queryKey, []) : null; //add missing queryKey and empty array as jiraList.
        finalData.queryData[queryKey]["jiraDetail"] = []; //create empty jiraDetail array.
    }
    //then fill it with data, since it is available now.
    finalData.queryData[queryKey]["jiraDetail"].push(extractedData);
};

暫無
暫無

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

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