-4

Say I have an object like so:

obj = {
    property1: "Prop 1 value",
    property2: "-",
    property3: "Prop 3 value"
    property4: "-"
}

If the property value equals "-" on a property I'd like to remove it from the object.

I've looked into for loops, but I don't even know if this is the right paradigm for working with an object.

Mdalz
  • 154
  • 12
  • 1
    Possible duplicate of [this](http://stackoverflow.com/questions/208105/how-to-remove-a-property-from-a-javascript-object). – Sotiris Kiritsis Oct 15 '15 at 14:19
  • @user340764 Question was more related to proper looping mechanism than how to remove an object property. – Mdalz Oct 15 '15 at 14:27

2 Answers2

6

The algorithm is pretty straightforward. You iterate all properties in the object, check if property value equals to "-" and delete it from the object.

for (var key in obj) {
    if (obj[key] === '-')
        delete obj[key];
}
VisioN
  • 143,310
  • 32
  • 282
  • 281
2

Simple for in loop with a comparison.

var obj = {
    property1: "Prop 1 value",
    property2: "-",
    property3: "Prop 3 value",
    property4: "-"
}

for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        if (obj[prop]==="-") {
            delete obj[prop];
        }
    }
}

Other option is Object.keys with a for loop

var obj = {
        property1: "Prop 1 value",
        property2: "-",
        property3: "Prop 3 value",
        property4: "-"
    }
Object.keys(obj).forEach(function(key) {
    if(obj[key]==="-") {
        delete obj[key];
    }
});
epascarello
  • 204,599
  • 20
  • 195
  • 236
  • I don't think `hasOwnProperty` is really required here. Extending basic `Object` with values containing `"-"` looks really odd. – VisioN Oct 15 '15 at 14:23