在动态 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 List(已经是一个数组)的函数:
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);
};
- 带有多个答案选项的Javascript动态数组窗口
- 在jquery中声明基于动态变量的动态数组
- 给出动态数组时出现 jsTree 错误
- 如何将元素添加到动态数组并排除现有元素
- Javascript关联动态数组
- 计算类元素的未知/动态数组长度
- AngularStrap Select和ng选项don'使用动态数组不能很好地工作
- 如何在Javascript中创建动态数组
- JavaScript 动态数组与对象和数组
- jQuery中的动态数组名称
- 如何映射输入字段的动态数组
- 在动态 JavaScript 对象(键/值对)中创建动态数组
- 如何将一个数组数据添加到多个动态数组中
- 构建菜单或组合框,数据存储在“动态”数组中
- 创建简单的动态数组
- AngularJS重复动态数组值
- 引导预类型不适用于从 php 页面检索的动态数组
- 基于用户在UI中输入的数字创建动态数组(绑定到网格)
- JavaScript-动态数组和循环
- 将ng单击绑定到动态数组上的ng重复