emma
emma

Reputation: 264

react native : how to filter specific data?

How do I filter the first list by getting the second list :

this is the first list data :

[
  {
    "stateID": 1,
    "name": "Emergency"
  },
  {
    "stateID": 2,
    "name": "Madame Green"
  },
  {
    "stateID": 3,
    "name": "Madame Yellow"
  },
  {
    "stateID": 4,
    "name": "Madame Red"
  },
  {
    "stateID": 5,
    "name": "Earthquake"
  }
]

this is the second list data that i want get:

[
  {
    "stateID": 1,
    "name": "Emergency"
  },
  {
    "stateID": 2,
    "name": "Madame"
  },
  {
    "stateID": 5,
    "name": "Earthquake"
  }
]

this needs be the filter :

{stateList.filter(option => <Picker.Item label={option.label} key={option.key} value={option.value} />)}

Upvotes: 0

Views: 58

Answers (2)

Hamas Hassan
Hamas Hassan

Reputation: 941

const d1 = [
  {
    "stateID": 1,
    "name": "Emergency"
  },
  {
    "stateID": 2,
    "name": "Madame Green"
  },
  {
    "stateID": 3,
    "name": "Madame Yellow"
  },
  {
    "stateID": 4,
    "name": "Madame Red"
  },
  {
    "stateID": 5,
    "name": "Earthquake"
  }
]

const d2 = [
  {
    "stateID": 1,
    "name": "Emergency"
  },
  {
    "stateID": 2,
    "name": "Madame"
  },
  {
    "stateID": 5,
    "name": "Earthquake"
  }
]


let arr1 = d1.filter(e => {
   return d2.some(item => item.stateID === e.stateID); // take the ! out and you're done
});

Output:

Output: [
  { stateID: 1, name: 'Emergency' },
  { stateID: 2, name: 'Madame Green' },
  { stateID: 5, name: 'Earthquake' }
]

Upvotes: 0

Sundari Ragavan
Sundari Ragavan

Reputation: 107

For filter i would do as follows

let data_first = [
  {
    "stateID": 1,
    "name": "Emergency"
  },
  {
    "stateID": 2,
    "name": "Madame Green"
  },
  {
    "stateID": 3,
    "name": "Madame Yellow"
  },
  {
    "stateID": 4,
    "name": "Madame Red"
  },
  {
    "stateID": 5,
    "name": "Earthquake"
  }
];

let data_second = [
  {
    "stateID": 1,
    "name": "Emergency"
  },
  {
    "stateID": 2,
    "name": "Madame"
  },
  {
    "stateID": 5,
    "name": "Earthquake"
  }
]

let res = data_first.filter(v=>!(data_second.some(e=>e.stateID === v.stateID)))

console.log(res);

Upvotes: 1

Related Questions