How To Delete A Javascript Object Item By Value?
Take, for instance, the following object: var fruits = { 'red' : 'apple', 'blue' : 'blueberry', 'yellow' : 'banana' } I know I can use delete fruits['red'] to remove i
Solution 1:
Have you tried something like this?
function deleteByValue(val) {
for(var f in fruits) {
if(fruits[f] == val) {
delete fruits[f];
}
}
}
And as per Rocket's comment, you might want to check hasOwnProperty
to make sure you aren't deleting members of the object's prototype:
functiondeleteByValue(val) {
for(var f in fruits) {
if(fruits.hasOwnProperty(f) && fruits[f] == val) {
delete fruits[f];
}
}
}
Solution 2:
var key = null;
for (var k in fruits){
if (fruits[k] === 'apple'){
key = k;
break;
}
}
if (key != null)
delete fruits[key];
Iterate over the object finding the corresponding key, then remove it (if found).
Solution 3:
Don't know if this is efficient in terms of processing but using filter you can get this done in three lines:
var fruits = {
"red" : "apple",
"blue" : "blueberry",
"yellow" : "banana"
}
var appleless_keys = Object.keys(fruits).filter(this_fruit => fruits[this_fruit] !== "apple");
appleless_obj = {};
appleless_keys.forEach(key => appleless_obj[key] = fruits[key]);
console.dir(appleless_obj);
Or as a function:
var fruits = {
"red" : "apple",
"blue" : "blueberry",
"yellow" : "banana"
}
functionremove_fruit(fruit_to_remove,fruits){
var new_keys = Object.keys(fruits).filter(this_fruit => fruits[this_fruit] !== fruit_to_remove);
new_obj = {};
new_keys.forEach(key => new_obj[key] = fruits[key]);
return new_obj;
}
console.dir(remove_fruit("apple",fruits));
Solution 4:
what about this one?
functiondelteByValue(a){
fruits.foreach( function( k, v ) {
if (fruits[v] == a){
delete fruits[k];
}
});
}
Solution 5:
I think its a good idea to create a function and override the Object.prototype:
/**
* @autor Javier Cobos
* @param value The value to look for
* @return true if founded deleted, false if not
*/
Object.prototype.removeByValue = function(value){
var i;
for(i inthis){
if(this.hasOwnProperty(i))
if(value === this[i]){
delete(this[i]);
returntrue;
}
}
returnfalse;
}
// Examplevar fruits = {
"red" : "apple",
"blue" : "blueberry",
"yellow" : "banana"
}
fruits .removeByValue("apple");
This way we have a new method for every single Object in our script :)
Post a Comment for "How To Delete A Javascript Object Item By Value?"