0

Hi so i have an array of integers which i have been trying to check against my array of objects. I only want to check that ANY of the values in the array are within the objArray, it does not need to be ALL.

const objArray = [{id: 1},{id: 2},{id: 3}]

const array = '1,2'

This is what i tried but i think i am probably way off the logic, i end up getting false every time i run the below code.

stringToArray(array).includes(objArray.some(o => o.id))

Essentially my overall goal to is to validate that any return true and then continue with code otherwise throw an error.

function stringToArray() {
    return valueString.match( /(?=\S)[^,]+?(?=\s*(,|$))/g )
}

Thanks for you help! I keep getting false regardless and it may be to do with my function wrapping around the array?, My array was originally a string which i converted using regex to an array.

Thank you in advance!

  • Does this SO thread on array intersection help? : https://stackoverflow.com/questions/1885557/simplest-code-for-array-intersection-in-javascript – BioData41 Dec 26 '21 at 14:59

2 Answers2

1

You're very close. Just flip your statement around.

objArray.some(o => array.includes(o.id))

const objArray = [{id: 1},{id: 2},{id: 3}]

const array = [1, 2];

console.log(objArray.some(o => array.includes(o.id)));
Liftoff
  • 24,717
  • 13
  • 66
  • 119
0

You were on the right track with your logic.

Although this is not the most efficient answer, it will work for ur case.

I believe you want to match all of the values, if I understand you correctly.

Therefore, one way to check if each id in the object is included in the array is to loop over the object.

If you want to much at least one, just change it to some instaed of every

const objArray = [{id: 1},{id: 2},{id: 3}]

const array = [1, 2,3]




const condition = objArray.every(objElement => {

// here you get acess to id here. so we check it againts the array 
 return array.includes(objElement.id)
})

console.log(condition)
Emil Tayeb
  • 1
  • 1
  • 1
  • Thankyou Emil, i forgot i had a function to convert the array from a string to an array. The function above keeps returning false, is this because of my converting function? –  Dec 26 '21 at 15:17
  • i see. if thats the case, the problome is that in my original answer, we matches number vs number but now, you want to match a string to number. just make sure that in your check, you transform the object id to string before the check. ```array.includes(""+objElement.id)``` – Emil Tayeb Dec 27 '21 at 09:29