2

I would like to get a list of key names based on a value I check.

This is what I have.

const data = {
  "DE": "ARUN",
  "HI": "ARUN",
  "PR": "ARUN",
  "TX": "ARUN",
  "MA": "ARUN",
  "MD": "CHARLES,BRANDON,DAVID,ARUN",
  "IA": "ARUN",
  "ME": "ARUN",
  "ID": "ARUN",
  "MI": "ARUN",
  "UT": "ARUN",
  "MN": "ARUN",
  "MO": "ARUN",
  "IL": "ARUN",
  "IN": "ARUN",
  "MS": "ARUN",
  "MT": "ARUN",
  "AK": "ARUN",
  "AL": "ARUN",
  "VA": "ARUN",
  "AR": "ARUN",
  "AS": "ARUN",
  "VI": "ARUN",
  "NC": "ARUN",
  "ND": "ARUN",
  "NE": "ARUN",
  "RI": "ARUN",
  "AZ": "ARUN",
  "NH": "ARUN",
  "NJ": "ARUN",
  "VT": "ARUN",
  "NM": "ARUN",
  "FL": "ARUN",
  "NV": "ARUN",
  "WA": "ARUN",
  "NY": "ARUN",
  "SC": "ARUN",
  "SD": "ARUN",
  "WI": "ARUN",
  "OH": "ARUN",
  "GA": "ARUN",
  "OK": "ARUN",
  "CA": "ARUN",
  "WV": "ARUN",
  "WY": "ARUN",
  "OR": "ARUN",
  "KS": "ARUN",
  "CM": "ARUN",
  "CO": "ARUN",
  "GU": "ARUN",
  "KY": "ARUN",
  "CT": "ARUN",
  "PA": "ARUN",
  "LA": "ARUN",
  "TN": "ARUN",
  "DC": "ARUN"
}

const name = 'BRANDON'

const newMappedData = Object.keys(data).map(key => {
  return {
    [key]: data[key].split(',')
  }
})

const filteredData = newMappedData.filter(item => Object.values(item).includes(name))


console.log(filteredData)

In the above example, when we enter 'BRANDON', the result should only be ['MD'] and if 'ARUN', it should give me ['DE', 'HI', 'PR',...]

Please advice.

0

2 Answers 2

4

You could filter the keys by checking the splitted string.

const
    getKeys = value => Object.keys(data).filter(k => data[k].split(',').includes(value)),
    data = { DE: "ARUN", HI: "ARUN", PR: "ARUN", TX: "ARUN", MA: "ARUN", MD: "CHARLES,BRANDON,DAVID,ARUN", IA: "ARUN", ME: "ARUN", ID: "ARUN", MI: "ARUN", UT: "ARUN", MN: "ARUN", MO: "ARUN", IL: "ARUN", IN: "ARUN", MS: "ARUN", MT: "ARUN", AK: "ARUN", AL: "ARUN", VA: "ARUN", AR: "ARUN", AS: "ARUN", VI: "ARUN", NC: "ARUN", ND: "ARUN", NE: "ARUN", RI: "ARUN", AZ: "ARUN", NH: "ARUN", NJ: "ARUN", VT: "ARUN", NM: "ARUN", FL: "ARUN", NV: "ARUN", WA: "ARUN", NY: "ARUN", SC: "ARUN", SD: "ARUN", WI: "ARUN", OH: "ARUN", GA: "ARUN", OK: "ARUN", CA: "ARUN", WV: "ARUN", WY: "ARUN", OR: "ARUN", KS: "ARUN", CM: "ARUN", CO: "ARUN", GU: "ARUN", KY: "ARUN", CT: "ARUN", PA: "ARUN", LA: "ARUN", TN: "ARUN", DC: "ARUN" };

console.log(getKeys('BRANDON'));
console.log(getKeys('ARUN'));
.as-console-wrapper { max-height: 100% !important; top: 0; }

Sign up to request clarification or add additional context in comments.

Comments

2

If you use includes you don't even need to split. Also you don't need to use map to create a new array:

const data = {
  "DE": "ARUN",
  "HI": "ARUN",
  "PR": "ARUN",
  "TX": "ARUN",
  "MA": "ARUN",
  "MD": "CHARLES,BRANDON,DAVID,ARUN",
  "IA": "ARUN",
  "ME": "ARUN",
  "ID": "ARUN",
  "MI": "ARUN",
  "UT": "ARUN",
  "MN": "ARUN",
  "MO": "ARUN",
  "IL": "ARUN",
  "IN": "ARUN",
  "MS": "ARUN",
  "MT": "ARUN",
  "AK": "ARUN",
  "AL": "ARUN",
  "VA": "ARUN",
  "AR": "ARUN",
  "AS": "ARUN",
  "VI": "ARUN",
  "NC": "ARUN",
  "ND": "ARUN",
  "NE": "ARUN",
  "RI": "ARUN",
  "AZ": "ARUN",
  "NH": "ARUN",
  "NJ": "ARUN",
  "VT": "ARUN",
  "NM": "ARUN",
  "FL": "ARUN",
  "NV": "ARUN",
  "WA": "ARUN",
  "NY": "ARUN",
  "SC": "ARUN",
  "SD": "ARUN",
  "WI": "ARUN",
  "OH": "ARUN",
  "GA": "ARUN",
  "OK": "ARUN",
  "CA": "ARUN",
  "WV": "ARUN",
  "WY": "ARUN",
  "OR": "ARUN",
  "KS": "ARUN",
  "CM": "ARUN",
  "CO": "ARUN",
  "GU": "ARUN",
  "KY": "ARUN",
  "CT": "ARUN",
  "PA": "ARUN",
  "LA": "ARUN",
  "TN": "ARUN",
  "DC": "ARUN"
}

const name = 'BRANDON'

const filteredData = Object.keys(data).filter(key => data[key].includes(name))

console.log(filteredData)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.