javascript - JS - Pushing data into JSON structure using forEach loops on Arrays -


i attempting extract json values (from structure called jsonwithlistofstatesandcounters) if matches element in inputted array (inputedjurisdictionarray). inputed array contains sting values include singular or multiple state names (i.e. var inputedjurisdictionarray = ["iowa", "california, indiana, delaware", "florida"]). singular state values in array handled @ end, multiple state values gets tricky. using split() in order turn them array can processed 1 one. anytime 1 of states inputed array matches "state" value in jsonwithlistofstatesandcounters, extracting json structure , pushing @ end of every block initial variable myjurisdictionjson. problem having once these foreach loops completed, still left original values in myjurisdictionjson, instead of val , counter should extracted. jsonwithlistofstatesandcounters contains values should match elements of inputedjurisdictionarray, information not being pushed myjurisdictionjson. doing wrong? tips/pointers helpful.

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 1 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 pushed 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 item has been pushed myjurisdictionjson, append 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 1 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;                     }                 }                }                }); 

i'm not totally sure output want it's close.

// input data per example  let inputedjurisdictionarray = [    'iowa',    'california, indiana, delaware',    'florida'  ];    // had make part up. it's missing example  let jsonwithlistofstatesandcounters = [{      jurisdictioncounter: 2,      jurisdictionstate: 'florida'    },    {      jurisdictioncounter: 4,      jurisdictionstate: 'indiana'    },    {      jurisdictioncounter: 3,      jurisdictionstate: 'texas'    }  ];    // first, fix inputedjurisdictionarray  // reduce() loops on each array element  // in case we're returning larger  // array instead of reduced on method works    // there's few things going on here. split, current element  // on ','. taht gives array. call map() on it.  // loops on each value of array , returns  // array of same length. on each loop, trim() whitespace  // make accumulator concatenate current array.  // fat arrow ( => ) functions return results when it's 1 statement.  inputedjurisdictionarray = inputedjurisdictionarray.reduce(    (acc, curr) => acc.concat(curr.split(',').map(el => el.trim())), []  );    // can filter() jsonwithlistofstatesandcounters. loop through  // each element. if jurisdictionstate property happens in  // inputedjurisdictionarray array, add  // myjurisdictionjson array.  let myjurisdictionjson = jsonwithlistofstatesandcounters.filter(el =>    inputedjurisdictionarray['includes'](el.jurisdictionstate)  );    console.log(myjurisdictionjson);


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -