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
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
Share Improve this question asked Sep 29, 2018 at 17:05 Clément CREUSATClément CREUSAT 3213 gold badges6 silver badges13 bronze badges 1- Possible duplicate of Javascript: How to filter object array based on attributes? – Heretic Monkey Commented Sep 29, 2018 at 17:38
2 Answers
Reset to default 4You 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,
);