Я думал, что именно так данные будут искать каждую операцию запроса, имеющую уникальный идентификатор (который в приведенном ниже примере равен 1 & 2).создание динамического массива в динамическом javascript-объекте (пара ключ/значение)
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"
}
]
}
}
};
У меня есть функция, которая принимает уникальный идентификатор & списка в запросе в 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
с необходимыми для него значениями. Это работает.
Я еще одну функцию, которая принимает уникальный идентификатор в выборке & один 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
в массив (jiraDetail) queryKey
, который даже не создан.
В настоящее время это ошибка 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
Вы должны проверять наличие ключей в любом случае - это не имеет большого значения ... не знаю, почему это проблема? – tymeJV
Это не проблема на самом деле, просто подтверждая, что если функция называется тысяча раз, проверка каждого времени существования является большой проблемой или нет. Поскольку он фактически создаст пространство один раз и время отдыха, он пропустит часть 'if'. –