मेरे पास निम्न विधि है, मैं लूप के लिए हार्ड कोड किए गए मानों की जांच करने के बजाय पहली तीन पंक्तियों में घोषित तीन चर का उपयोग करना चाहता हूं और इसे res में जोड़ना चाहता हूं। मैं निम्नलिखित करने की कोशिश कर रहा था ताकि मुझे केवल सफलता और असफल राज्यों के अंदर मूल्यों को बदलना पड़े

//    if(successStates.find(x => x === filterVal)){
//         filter1 = successStates[0];
//         filter2 = successStates[1];
//    } 

getJobFilter() {
  let successStates = ['ACCEPTED_STATE', 'ACTIVE_STATE'];
  let failedStates = ['INACTIVE_STATE'];
  let otherStates = ['UNKNOWN'];
  let res = [];
  let filter =
    JSON.parse(sessionStorage.getItem('cdgFilter') || '{}');
  for (let key in filter) {
    if (key) {
      if (key === 'collection_status') {
        let filterVal: any;
        let filter1, filter2;

        if (filterVal === "SUCCESSFUL") {
          filter1 = 'ACTIVE_STATE';
          filter2 = 'ACCEPTED_STATE';
        } else if (filterVal === "FAILED") {
          filter1 = 'UNKNOWN_STATE';
          filter2 = 'INACTIVE_STATE';
        }
        res.push({
          'field': 'State',
          'value': filter1
        }, {
          'field': 'State',
          'value': filter2
        });
      } else {
        res.push({
          'field': key,
          'value': filter[key].filter
        });
      }
    }
  }
  return res;
}
0
Gaurav 28 अक्टूबर 2019, 21:58

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा करने का सबसे आसान तरीका मैप ऑब्जेक्ट का उपयोग करना है:

const collectionStatusFilters = {
  SUCCESSFUL: ['ACTIVE_STATE', 'ACCEPTED_STATE'],
  FAILED: ['UNKNOWN_STATE', 'INACTIVE_STATE']
}

फिर आप अपने if कथन को इस प्रकार बदल सकते हैं:

const filters = collectionStatusFilters[filterVal];
res = res.concat(
  filters.map(filter => ({
    field: 'State',
    value: filter
  }))
);
0
Jacob 28 अक्टूबर 2019, 19:48