Skip to content Skip to sidebar Skip to footer

How To Convert A Single Key Value Pair Object To Array Of Objects With Key Value Pair?

I have a single object of key-value pair every key has an array as a value, How to convert it to an array of objects with key-value pair property by comparing it with another array

Solution 1:

You can filter it first using hasOwnProperty and then map it to set setValue property. Here is implementation:

var obj = { "name": "jack", "age": 10, "country": "india", "state": "Delhi" };
var obj2 =[{key: "product", type:"", value:"", required:"true", mandatory:"true"}, {key: "sub-product", type:"", value:"", required:"true", mandatory:"true"}, {key: "name", type:"text", value:"", required:"true", mandatory:"true"}, {key: "age", type:"text", value:"[0-9]", required:"true", mandatory:"true"}, {key: "country", type:"text", value:"[a-z]", required:"true", mandatory:"true"}, {key: "state", type:"text", value:"[a-z]", required:"true", mandatory:"true"}];


var result = obj2.filter(k=>obj.hasOwnProperty(k.key)).map(p=>({...p, setValue:obj[p.key]}));

console.log(result);

Solution 2:

Loop over obj2. If the key value is a property of obj, copy the corresponding value into the setValue property of the object, and push it onto the result.

obj = {
  "name": "jack",
  "age": 10,
  "country": "india",
  "state": "Delhi"
};
obj2 = [{key: "product", type="", value="", required="true", mandatory="true"},
        {key: "sub-product", type="", value="", required="true", mandatory="true"},
        {key: "name", type="text", value="", required="true", mandatory="true"},
        {key: "age", type="text", value="[0-9]", required="true", mandatory="true"},
        {key: "country", type="text", value="[a-z]", required="true", mandatory="true"},
        {key: "state", type="text", value="[a-z]", required="true", mandatory="true"}];

var result = [];
obj2.forEach(o => {
  if (o.keyin obj) {
    o.setValue = obj[o.key];
    result.push(o);
  }
});
console.log(result);

Solution 3:

You can use Array.prototype.flatmap to achieve this

const obj = {
  "name": "jack",
  "age": 10,
  "country": "india",
  "state": "Delhi"
}
const obj2 = [
  {key: "product", type:"", value:"", required:"true", mandatory:"true"},
  {key: "sub-product", type:"", value:"", required:"true", mandatory:"true"},
  {key: "name", type:"text", value:"", required:"true", mandatory:"true"},
  {key: "age", type:"text", value:"[0-9]", required:"true", mandatory:"true"},
  {key: "country", type:"text", value:"[a-z]", required:"true", mandatory:"true"},
  {key: "state", type:"text", value:"[a-z]", required:"true", mandatory:"true"}
]

const result = obj2.flatMap((entry) => {
  if (obj[entry.key]) {
    return {
      ...entry,
            setValue: obj[entry.key],
    }
  }
    return []
})

console.log(result)

Post a Comment for "How To Convert A Single Key Value Pair Object To Array Of Objects With Key Value Pair?"