如果它与我输入数组中的元素(inputedJurisdictionArray
)匹配,我试图提取JSON值(来自名为jsonWithListOfStatesAndCounters
的结构)。我的输入数组包含了包含单数或多个状态名称的sting值(即var inputedJurisdictionArray = ["Iowa", "California, Indiana, Delaware", "Florida"]
)。这个数组中的奇异状态值通常在最后处理,但是多个状态值是棘手的。我使用split()
将它们转换为另一个数组,以便它们可以逐个处理。无论何时,这个输入数组中的某个状态与jsonWithListOfStatesAndCounters
中的“状态”值相匹配,我将它解压缩到另一个JSON结构中,并将其在每个块的末尾推入我的初始变量myJurisdictionJSON
。我遇到的问题是,一旦这些forEach循环完成,我仍然保留我的原始值myJurisdictionJSON
,而不是应提取的val和counter。 jsonWithListOfStatesAndCounters
确实包含应与我的inputedJurisdictionArray
的元素匹配的值,但信息未被推入myJurisdictionJSON
。我究竟做错了什么?任何提示/指针都会有所帮助。JS - 在数组中使用forEach循环将数据推送到JSON结构中
var myJurisdictionJSON = [{
jurisdiction_val: 'jurisdiction_val',
jurisdiction_counter: 'jurisdiction_counter'
}];
inputedJurisdictionArray.forEach(function each(item) {
if (Array.isArray(item)) {
item.forEach(each);
} else {
var jurisdictionInput = item;
jsonWithListOfStatesAndCounters.forEach(function each(item) {
if (Array.isArray(item)) {
item.forEach(each);
} else {
if (jurisdictionInput.includes(",") === true){//Checking if more than one jurisdiction in string
var jurisdictionArr = jurisdictionInput.split(", ");
var jurisdictionCounter = item.jurisdictionCounter;
var jurisdictionState = item.jurisdictionState;
jurisdictionArr.forEach(function(element) {
if (myJurisdictionJSON.jurisdiction_counter == 'jurisdiction_counter'){ // If nothing is pushed into our predefined JSON object
if (jurisdictionState.toLowerCase() == trim(element.toLowerCase())) {
var jurisdictionJSON_inner = {
jurisdiction_val: element,
jurisdiction_counter: jurisdictionCounter
};
myJurisdictionJSON.push(jurisdictionJSON_inner);
return;
}
}else if (myJurisdictionJSON.jurisdiction_counter != 'jurisdiction_counter'){ // if an item has been pushed into myJurisdictionJSON, append the next items
var jurisdictionCounter = item.jurisdictionCounter;
var jurisdictionState = item.jurisdictionState;
if (jurisdictionState.toLowerCase() == trim(jurisdictionInput.toLowerCase())) {
jurisdictionJSON_inner.jurisdiction_val = jurisdictionJSON_inner.jurisdiction_val + ", " + jurisdictionInput;
jurisdictionJSON_inner.jurisdiction_counter = jurisdictionJSON_inner.jurisdiction_counter + ", " + jurisdictionCounter;
myJurisdictionJSON.push(jurisdictionJSON_inner);
return;
}
}
});
}
else{// if only one jurisdiction state in jurisdictionInput string
var jurisdictionCounter = item.jurisdictionCounter;
var jurisdictionState = item.jurisdictionState;
if (jurisdictionState.toLowerCase() == trim(jurisdictionInput.toLowerCase())) {
var jurisdictionJSON_inner = {
jurisdiction_val: jurisdictionInput,
jurisdiction_counter: jurisdictionCounter
};
myJurisdictionJSON.push(jurisdictionJSON_inner);
return;
}
}
}
});