Question

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"
  }
]
}
]
Was it helpful?

Solution

You might try something like this.

arr = _.without(arr, _.findWhere(arr.children, {selected: 'selected'}));

http://underscorejs.org/#without

OTHER TIPS

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"});
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top