does include works with array of objects?

前端 未结 3 883
深忆病人
深忆病人 2021-01-28 23:24

i\'m trying to use includes to see if an object is inside the array like so:

arr=[{name:\'Dan\',id:2}]

and I want to check like so:

<         


        
3条回答
  •  囚心锁ツ
    2021-01-28 23:52

    does include works with array of objects?

    Yes — if you use the same object as the argument to includes that's in the array:

    const obj = {name: "Dan", id: 2};
    const arr = [{name: "T.J.", id: 42}, obj, {name: "Joe", id: 3}];
    console.log(arr.includes(obj));                  // true
    console.log(arr.includes({name: "Dan", id: 2})); // false

    includes uses a === check, and o1 === o2 is only ever true when o1 and o2 refer to the same object. In your example, you're using two different but equivalent objects instead.

    For your use case, you probably want some, which lets you execute a callback to determine whether an entry in the array matches a condition:

    if (arr.some(e => e.id === 2)) {
    

    Example:

    const obj = {name: "Dan", id: 2};
    const arr = [{name: "T.J.", id: 42}, obj, {name: "Joe", id: 3}];
    console.log(arr.some(obj => obj.id === 2));      // true

    There are various ways to spin that, depending on what you want the check to be (which are discussed at length in this question's answers), but that just means adjusting the contents of the function you pass some.

提交回复
热议问题