Home > Software design >  filtering array of objects in react not working
filtering array of objects in react not working

Time:10-29

I have an array of objects like below

0: {Id: 1, name: 'xyz', pqID: 10, pqType: null}
1: {Id: 2, name: 'abc', pqID: 15, pqType: null}
2: {Id: 3, name: 'wer', pqID: 16, pqType: null}
3: {Id: 4, name: 'uyt', pqID: 18, pqType: null}
4: {Id: 5, name: 'qwe', pqID: 22, pqType: null}
5: {Id: 6, name: 'ert', pqID: 25, pqType: null}

I want objects of pqID and 10 and 15. Below is what I am trying which is giving empty array.

  const newUsers = arr.filter(
 (user) =>
  user.pqID == 10 && user.pqID == 15
 );

console.log(newUsers);

CodePudding user response:

Note the || operator

var arr = 
[{Id: 1, name: 'xyz', pqID: 10, pqType: null},
{Id: 2, name: 'abc', pqID: 15, pqType: null},
{Id: 3, name: 'wer', pqID: 16, pqType: null},
{Id: 4, name: 'uyt', pqID: 18, pqType: null},
{Id: 5, name: 'qwe', pqID: 22, pqType: null},
{Id: 6, name: 'ert', pqID: 25, pqType: null}]

 const newUsers = arr.filter(
      (user) =>
       user.pqID == 10 || user.pqID == 15 // note ||
     );

console.log(newUsers)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

CodePudding user response:

You could try that, with full array function syntax:

const newUsers = arr.filter(
    (user) => {return [10, 15].includes(user.pqID)}
);

Or the minified version, without parentheses and curly brackets:

const newUsers = arr.filter(user => [10, 15].includes(user.pqID));
  • Related