0

this is my data

let a = [
  {
    "activityCode": "23",
    "isValid": null
  },
  {
    "activityCode": "28",
    "isValid": null
  },
  {
    "activityCode": "32",
    "isValid": null
  }
]

let b = [
  {
    "activityCode": "23",
    "allocated": 3
  },
  {
    "activityCode": "32",
    "allocated": 2
  }
]

i want to change "isValid" to true if activityCode(a) in array has the same activityCode(b) & "isValid" to false if activityCode(a) in array has not the same activityCode(b), and the output i need like this:

let a = [
  {
    "activityCode": "23",
    "isValid": true
  },
  {
    "activityCode": "28",
    "isValid": false
  },
  {
    "activityCode": "32",
    "isValid": true
  }
]

Please help me. thanks guys.

1
  • 1
    What have you tried so far? Commented Oct 27, 2021 at 10:47

3 Answers 3

0

Try this :

a.forEach(element => {
  element.isValid = b.some(e => e.activityCode === element.activityCode);
});
console.log(a);
Sign up to request clarification or add additional context in comments.

Comments

0

a.map(aa => {
  const match = b.find(bb => bb.activityCode === aa.activityCode);
  return { activityCode: aa.activityCode, isValid: match !== undefined };
})

Comments

0

You can use Array.map() and Array.some() to get the desired result. If any element from a is present in array b Array.some() will return true.

let a = [ { "activityCode": "23", "isValid": null }, { "activityCode": "28", "isValid": null }, { "activityCode": "32", "isValid": null } ]
let b = [ { "activityCode": "23", "allocated": 3 }, { "activityCode": "32", "allocated": 2 } ]

const result = a.map(({ activityCode }) => ({ activityCode, isValid: b.some(el => el.activityCode === activityCode ) }));
console.log('Result:', result)
.as-console-wrapper { max-height: 100% !important; top: 0; }

1 Comment

Thank you sir, u save me today! :)

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.