Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

198
Views
Compare two objects and create new object

I have two objects as below:

var1 = {
    "ELEMENT1": [1110,1111],
    "ELEMENT2": ["909"],
    "ELEMENT3": ["910"]
}

var2 =  {
    "ELEMENT3": [
    {
        "ID":910,
        "NAME":"ELEMENT3",
        "DETAILS":"CURRENT"
    },
    {
        "ID":912,
        "NAME":"ELEMENT3",
        "DETAILS":"FUTURE"
    }
    ],
    "ELEMENT2":[
    {
        "ID":909,
        "NAME": "ELEMENT2",
        "DETAILS":"OUTAGE"
    },
    {
        "ID": 910,
        "NAME": "ELEMENT2",
        "DETAILS":"OUTAGE"
    }
    ],
    "ELEMENT1":[
    {
        "ID": 1110,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    },
    {
        "ID": 1111,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    },
    {
        "ID": 1112,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    },
    {
        "ID": 1113,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    }]
}

I am trying to creating 3rd object after comparing var1 and var2. 3rd object should contain only those ID which are present in var1.

3rd Object should look as below :

{
    "ELEMENT3": [
    {
        "ID":910,
        "NAME":"ELEMENT3",
        "DETAILS":"CURRENT"
    }
    ],
    "ELEMENT2":[
    {
        "ID":909,
        "NAME": "ELEMENT2",
        "DETAILS":"OUTAGE"
    }
    ],
    "ELEMENT1":[
    {
        "ID": 1110,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    },
    {
        "ID": 1111,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    }
    ]
}

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

This should do it:

var var1 = {
    "ELEMENT1": ["1110","1111"],
    "ELEMENT2": ["909"],
    "ELEMENT3": ["910"]
}

var var2 =  {
    "ELEMENT3": [
    {
        "ID":910,
        "NAME":"ELEMENT3",
        "DETAILS":"CURRENT"
    },
    {
        "ID":912,
        "NAME":"ELEMENT3",
        "DETAILS":"FUTURE"
    }
    ],
    "ELEMENT2":[
    {
        "ID":909,
        "NAME": "ELEMENT2",
        "DETAILS":"OUTAGE"
    },
    {
        "ID": 910,
        "NAME": "ELEMENT2",
        "DETAILS":"OUTAGE"
    }
    ],
    "ELEMENT1":[
    {
        "ID": 1110,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    },
    {
        "ID": 1111,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    },
    {
        "ID": 1112,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    },
    {
        "ID": 1113,
        "NAME": "WORK_PACKAGE",
        "DETAILS": "INLINE"
    }]
}

var obj = {};
Object.keys(var2).forEach((item) => {
  var2[item].forEach((subItem) => {
    if(var1[item].indexOf(`${subItem.ID}`) > -1) {
      obj[item] = [...(obj[item] ?? []), subItem]
    }
  })
});

console.log(obj);

about 4 years ago · Juan Pablo Isaza Report

0

You could loop through var2 and filter the IDs which var1 includes and assign filtered props to a new object:

let var1 = {
  ELEMENT1: [1110, 1111],
  ELEMENT2: [909],
  ELEMENT3: [910],
}

let var2 = {
  ELEMENT3: [
    { ID: 910, NAME: 'ELEMENT3', DETAILS: 'CURRENT' },
    { ID: 912, NAME: 'ELEMENT3', DETAILS: 'FUTURE' },
  ],
  ELEMENT2: [
    { ID: 909, NAME: 'ELEMENT2', DETAILS: 'OUTAGE' },
    { ID: 910, NAME: 'ELEMENT2', DETAILS: 'OUTAGE' },
  ],
  ELEMENT1: [
    { ID: 1110, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' },
    { ID: 1111, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' },
    { ID: 1112, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' },
    { ID: 1113, NAME: 'WORK_PACKAGE', DETAILS: 'INLINE' },
  ],
}

const result = {}

for (let key in var2) {
  result[key] = var2[key].filter(o => var1[key]?.includes(o.ID))
}

console.log(JSON.stringify(result, null, 2))

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!