Reputation: 77
I got object:
[
{
"name": "Test",
"settings": {
"object": {
"hoursAvailable": [
11,
9,
14
],
"value": 65
}
}
},
{
"name": "Test 2",
"settings": {
"object": {
"hoursAvailable": [],
"value": 65
}
}
},
{
"name": "Test 3",
"settings": {
"object": {
"value": 65
}
}
}
]
I'm figuring out how can i remove all hourAvailable < 10, using .filter or lodash. The problem sometimes i have undefined "hoursAvailable" objects. After filtering i need to have:
[
{
// other data
"settings": {
"object": {
"hoursAvailable": [
9, // <- all numbers <10
],
"value": 65
}
}
},
{
// other data
"settings": {
"object": {
"hoursAvailable": [],
"value": 65
}
}
},
{
// other data
"settings": {
"object": {
"value": 65
}
}
}
]
I'm trying to:
.filter(arr => {
arr['settings']['object']['hoursAvailable'] <= 10;
}
But it gives me undefined when there's no hoursAvailable object and didnt delete numbers <10 What should i do to delete <10 in ['hoursAvailable']?
Upvotes: 1
Views: 47
Reputation: 1695
You can achieve this by modifying the condition of your filter block.
I have made a JSfiddle for the representation. You can play around with conditions in the filter block to achieve the desired result.
https://jsfiddle.net/harsh89/bru7jyg6/7/
var xyz = arr.filter(val => {
return !val.settings.object.hoursAvailable ||
!val.settings.object.hoursAvailable.length ||
(val.settings.object.hoursAvailable[0] < 10);
});
Upvotes: 1