JavaScript Object grouping and filtering

itsharsha :

How to separate all fields whose key ends with 0x into a separate object/array using filter.

That is, all 00s, 01s, 02s must be filters out into a separate object or array.

The use the object entries to separate it by index but it fails when field is missing. So the day here is dynamic i.e sometime some fields are not entered. I guess filtering is the only way?

 {
     "hotel00": "asdasd",
      "adult00": "asdasd",
      "child00": "asdasd",
      "infant00": "asdasd",
      "hotel01": "asdasd",
      "adult01": "asdasd",
      "child01": "asdasd",
      "infant01": "asdas",
      "hotel02": "asdasdas",
      "adult02": "asdasd",
      "child02": "asdasd",
      "infant02": "asdasd",
      "hotel10": "asdasd",
      "adult10": "asdasd",
      "child10": "asdsd",
      "infant10": "asd",
      "hotel11": "asdsd",
      "adult11": "asd",
      "child11": "asdsd",
      "infant11": "asd",
      "hotel12": "asdasd",
      "adult12": "asdasd",
      "child12": "asdasdasd",
      "infant12": "asdsdasd",
    }

Output

       {
  "a": [
    {
      "hotel00": "asdasd",
      "adult00": "asdasd",
      "child00": "asdasd",
      "infant00": "asdasd",
    },
    {
      "hotel01": "asdasd",
      "adult01": "asdasd",
      "child01": "asdasd",
      "infant01": "asdas",
    },
    {
      "hotel02": "asdasdas",
      "adult02": "asdasd",
      "child02": "asdasd",
      "infant02": "asdasd",
    }
  ],
    "b": [
      {
        "hotel10": "asdasd",
        "adult10": "asdasd",
        "child10": "asdsd",
        "infant10": "asd",
      },
      {
        "hotel11": "asdsd",
        "adult11": "asd",
        "child11": "asdsd",
        "infant11": "asd",
      },
      {
        "hotel12": "asdasd",
        "adult12": "asdasd",
        "child12": "asdasdasd",
        "infant12": "asdsdasd",
      }
    ]
}
Sabbin :

Hope this does delivers the answer to your question

const obj =  {
  "hotel00": "asdasd",
   "adult00": "asdasd",
   "child00": "asdasd",
   "infant00": "asdasd",
   "hotel01": "asdasd",
   "adult01": "asdasd",
   "child01": "asdasd",
   "infant01": "asdas",
   "hotel02": "asdasdas",
   "adult02": "asdasd",
   "child02": "asdasd",
   "infant02": "asdasd",
   "hotel10": "asdasd",
   "adult10": "asdasd",
   "child10": "asdsd",
   "infant10": "asd",
   "hotel11": "asdsd",
   "adult11": "asd",
   "child11": "asdsd",
   "infant11": "asd",
   "hotel12": "asdasd",
   "adult12": "asdasd",
   "child12": "asdasdasd",
   "infant12": "asdsdasd",
 }
 
const {a,b,c,d,e,f} = Object.keys(obj).reduce(({a,b,c,d,e,f}, val, index) => ({
     a: /00\b(?<=\w)/.test(val)  ? {...a, [val]:obj[val]} : a,
     b: /01\b(?<=\w)/.test(val)  ? {...b, [val]:obj[val]} : b,
     c: /02\b(?<=\w)/.test(val)  ? {...c, [val]:obj[val]} : c,
     d: /10\b(?<=\w)/.test(val)  ? {...d, [val]:obj[val]} : d,
     e: /11\b(?<=\w)/.test(val)  ? {...e, [val]:obj[val]} : e,
     f: /12\b(?<=\w)/.test(val)  ? {...f, [val]:obj[val]} : f,
   }),{a:{},b:{},c:{},d:{},e:{},f:{}})

 const results = {
   a: [a,b,c],
   b: [d,e,f]
 };
 
 console.log(results)

LE second example

const obj =  {
  "hotel00": "asdasd",
   "adult00": "asdasd",
   "child00": "asdasd",
   "infant00": "asdasd",
   "hotel01": "asdasd",
   "adult01": "asdasd",
   "child01": "asdasd",
   "infant01": "asdas",
   "hotel02": "asdasdas",
   "adult02": "asdasd",
   "child02": "asdasd",
   "infant02": "asdasd",
   "hotel10": "asdasd",
   "adult10": "asdasd",
   "child10": "asdsd",
   "infant10": "asd",
   "hotel11": "asdsd",
   "adult11": "asd",
   "child11": "asdsd",
   "infant11": "asd",
   "hotel12": "asdasd",
   "adult12": "asdasd",
   "child12": "asdasdasd",
   "infant12": "asdsdasd",
 }

 const result = Object.keys(obj).reduce((acc,val)=>{
    ['00','01','02','10','11','12'].forEach((item, index) => {
      const x = index<3 ? 'a' : 'b';
      const i = index<3 ? index : index-3;
      acc[x][i] = val.substring(val.length-2) === item ? {...acc[x][i], [val]:obj[val]} : acc[x][i];
    })
    return acc;
 },{a:[],b:[]})

 console.log(result)

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=31969&siteId=1