You might try something like this.
arr = _.without(arr, _.findWhere(arr.children, {selected: 'selected'}));
Domanda
i have an example nested menu. i want to delete the object that has the selected property. how do i do this with underscore or lodash? thx
[
{
"label": "My Documents",
"id": "mydocs",
"children": [
{
"children": [
{
"children": [
],
"label": "sub folder 1.1",
"id": "58d32eec-75d3-45ab-b896-73bdb12dcacd",
"selected": "selected"
},
{
"children": [
{
"children": [
],
"label": "sub sub folder 1.2.1",
"id": "0c0c9705-7012-4e11-a540-526babdd816f"
}
],
"label": "sub folder 1.2",
"id": "bdfa6eb9-9527-490a-be5d-b2158df98982"
}
],
"label": "folder 1",
"id": "e53455ef-4e0c-4d2c-8148-7e3152fff0ae"
},
{
"children": [
],
"label": "folder 2",
"id": "b6fa392b-89ed-441f-9c4b-2a44c48829f6"
},
{
"children": [
],
"label": "My Docs 2",
"id": "db92b3e6-80f6-4344-bba1-252b195c17a0"
}
]
}
]
Soluzione
You might try something like this.
arr = _.without(arr, _.findWhere(arr.children, {selected: 'selected'}));
Altri suggerimenti
This will delete the item from the data
array where data
is your given object.
_.each(data, function(item, idx) {
if(_.findWhere(item.children, {selected: "selected"})) {
data.splice(idx, 1); //remove this item from data
}
});
This will filter it out of the array the selected object will still be in data
_.reject(data, function(item, idx) {
return _.findWhere(item.children, {selected: "selected"});
});