Using slice (In this situation I find the correct item in the Array, attempt slice, but the Array stays exactly the same):
for (var i=0; i<vm.storedViews.length; i++) {
if (view_id === vm.storedViews[i].id) {
vm.storedViews.slice(i,1);
// vm.storedViews = _.remove(vm.storedViews, i);
break;
}
}
console.log('vm.storedViews',vm.storedViews);
Using _.remove all items end up being removed from my Array:
for (var i=0; i<vm.storedViews.length; i++) {
if (view_id === vm.storedViews[i].id) {
// vm.storedViews.slice(i,1);
vm.storedViews = _.remove(vm.storedViews, i);
break;
}
}
console.log('vm.storedViews',vm.storedViews);

Use .splice() to modify the array. .slice just returns the selected elements.
vm.storedViews.splice(i, 1);
_.remove() didn't work because the the second argument is not an index, it's a predicate function -- it removes all elements of the array for which the function returns a truthy value. It looks like the closest lodash function to .splice() is _.pullAt(). It takes a list of array indexes to remove, so you can use it for your case where you just want to remove one element:
_.pullAt(vm.storedViews, i);
Instead of your for loop you can use _.findIndex():
_.pullAt(vm.storedViews, _.findIndex(vm.storedViews, 'id', view_id));
If the IDs are unique, you can also use:
_.remove(vm.storedViews, 'id', view_id);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With