Home > Back-end >  How to make {value,array[i]} object pairs in javascript
How to make {value,array[i]} object pairs in javascript

Time:12-16

I'm receiving from backend side object which is formulated like:

[
  {value: 'FIRST', AvailableValues[{code: "one"},{code: "two"}]},
  {value: 'SECOND', AvailableValues[{code: "one"},{code: "two"}]
]

My question is how to map through this object to create pairs like

[{value: "FIRST", code:"one"}, 
{value: "FIRST", code:"two"},
{value: "SECOND", code:"one"},
{value: "SECOND", code:"two"}]

Thanks

I tried combination of javascript predefined methods like double map, keyed search and so on, but it resulted with errors

CodePudding user response:

use reduce function

Also, your initial data should be an array because if it's a object, then it should contains key with values

const list = [
  {value: 'FIRST', AvailableValues:[{code: "one"},{code: "two"}]},
  {value: 'SECOND', AvailableValues:[{code: "one"},{code: "two"}]}
]

const result = list.reduce((acc,item) => {
  const res = item.AvailableValues.map(i => ({value: item.value, code: i.code}))
  
  return [...acc,...res]
}, [])

console.log(result)

CodePudding user response:

Try something like this, Assuming that you receiving array of object from backend

let result = [];
yourObject.forEach((x)=>{
    x.AvailableValues.map((innerItem)=>{ 
        result.push({value:x.value, code : innerItem.code})
    });
})
console.log(result)

CodePudding user response:

The other answers here gets the job done. For completion here is an approach using flatMap combined with an inner map

const data  =[
  {value: 'FIRST', AvailableValues:[{code: "one"},{code: "two"}]},
  {value: 'SECOND', AvailableValues:[{code: "one"},{code: "two"}]}
]

const res = data.flatMap(({value,AvailableValues}) => AvailableValues.map(({code}) => ({value,code})))

console.log(res)

CodePudding user response:

    var response = [{
            value: 'FIRST', AvailableValues: [{ code: "one" }, { code: "two" }]},{
            value: 'SECOND', AvailableValues: [{ code: "one" }, { code: "two" }]}
    ];
    
    var output = [];
    
    response.forEach(function(o) {
        o.AvailableValues.forEach(function(oo) {
            var t = {
                value: o.value,
                code: oo.code
            };
            output.push(t);
        })
    });
    
    console.log(output);

  • Related