简体   繁体   中英

Filtering an Object in Array with javascript in react native

I'm stuck on something I think it is just stupid but after trying some stuffs, I can't find the solution. Any advice ?

I have an array with objects in this format :

   [
    Object {
      "name": "name",
     "description": "100 jours ferme",
     "image: "path_image",
     "culture": Array [
      Object {
        "name": "name",
        "value": "309",
      }
    ]}
    ...
    ]

With a function in my react native project I get a selected value , for instance : 309

So what i'm trying to do is to create a New Array with only the items containing this value in my Object inside culture and modifying the state of my array (with setState)

I know I can map all the culture array with .map() but then I'm stuck. I just want to say "I want a new array with these elements" ...

Then, I know if I had something like that :

"culture": 309

I could have done that : myArray.filter(i => i.culture == selectedValue)

Any help on how I can do that with .filter(), .map() ?

Thank you

You can Array.prototype.filter over the array, then for each culture run Array.prototype.find with the predicate of

o => o.value === selectedValue

Here is a running example:

 const arr = [ { name: "name", description: "100 jours ferme", image: "path_image", culture: [{ name: "name", value: "309" }] }, { name: "name", description: "100 jours ferme", image: "path_image", culture: [{ name: "name", value: "308" }] } ]; const selectedValue = '309'; const newArr = arr.filter(obj => obj.culture.find(o => o.value === selectedValue)); console.log(newArr) 
 .as-console-wrapper { max-height: 100% !important; } 

To filter array with specific key,

var filterArray = detailArray.filter(
      data => data.service === serviceIdentifier,
    );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM