Home > Net >  how to get not matching value by comparing array of objects and arrays using javascript
how to get not matching value by comparing array of objects and arrays using javascript

Time:08-07

I have array of object and array, get the not matching array in javascript

for given array object arrobj and array arr

if clientid of arrobj has value in arr,

return not matching values on array from arr

I tried

const result = arrobj.find(mem => arr.includes(mem.clientId))
var arrobj =  [
  {
    "caseTaskId": 207,
    "clientId": 7831
  },
  {
    "caseTaskId": 207,
    "clientId": 7833
  },
  {
    "caseTaskId": 207,
    "clientId": 7834
  }
]

var arr = [7834,7832]

Expected Output

[7832]

CodePudding user response:

SOLUTION 1

You can make use of Set, Array.prototype.map and Array.prototype.filter here as:

set will contain all arrobj's clientId. So all you have to do is to loop over arr and then filter out the not present id.

var arrobj = [
    {
        caseTaskId: 207,
        clientId: 7831,
    },
    {
        caseTaskId: 207,
        clientId: 7833,
    },
    {
        caseTaskId: 207,
        clientId: 7834,
    },
];

var arr = [7834, 7832];
const set = new Set(arrobj.map((o) => o.clientId));
const result = arr.filter((no) => !set.has(no));
console.log(result);


SOLUTION 2

You can also use Array.prototype.find here as:

var arrobj = [
    {
        caseTaskId: 207,
        clientId: 7831,
    },
    {
        caseTaskId: 207,
        clientId: 7833,
    },
    {
        caseTaskId: 207,
        clientId: 7834,
    },
];

var arr = [7834, 7832];
const result = arr.filter((no) => !arrobj.find((o) => o.clientId === no));
console.log(result);

CodePudding user response:

Another option with for loops and Array.splice()

// Data
const arrobj =  [
  {
    "caseTaskId": 207,
    "clientId": 7831
  },
  {
    "caseTaskId": 207,
    "clientId": 7833
  },
  {
    "caseTaskId": 207,
    "clientId": 7834
  }
];

const arr = [7834,7832];

// Loop in loop
for(let i = 0; i <= arr.length; i  ) for(el of arrobj) if(arr[i] == el.clientId) arr.splice(i, 1);

// Test
console.log(arr);

  • Related