javascript - parse - Eliminar valores falsos en el objeto
if boolean javascript (5)
Acabo de crear una solución a su problema en JSBin: Demo de trabajo
Por favor encuentre abajo el código:
var myObj={105:true,183:false,108:true,106:false};
var myArray = [];
function RemoveFalseAndTransformToArray () {
for (var key in myObj) {
if(myObj[key] === false) {
delete myObj[key];
} else {
myArray.push(key);
}
}
}
RemoveFalseAndTransformToArray();
console.log("myObj: ", myObj);
console.log("myArray: ", myArray);
// result = ["105", "108"]
Por favor avísame si tienes alguna pregunta.
El problema que estoy enfrentando es la eliminación de los valores en el objeto que tiene la propiedad false
Aquí está el objeto
var myObj={105:true,183:false,108:true,106:false}
Puedo obtener los valores en una matriz usando la siguiente lógica:
Object.keys(myObj)
da ["105","183","108","106"]
Pero necesito una manera de eliminar los valores que tienen la propiedad false y generar como ["105",108"]
. Me puede ayudar ?
Necesita iterar sobre el objeto utilizando for...in
bucle
var myObj={105:true,183:false,108:true,106:false}
for(var key in myObj){
if(myObj.hasOwnProperty(key) && myObj[key] == false){
delete myObj[key];
}
}
console.log(JSON.stringify(myObj)) //{"105":true,"108":true}
console.log(Object.keys(myObj)) //["105", "108"]
Para eliminar esas propiedades, puede usar este algoritmo:
for (k in myObj)
{
if (myObj.hasOwnProperty(k) && myObj[k] === false)
{
delete myObj[k];
}
}
Si solo está interesado en las claves de valores no false
, puede usar:
var keys = Object.keys(myObj).filter(function (k) {
return myObj[k] !== false;
});
La hasOwnProperty()
es necesaria porque los objetos pueden contener propiedades que no son del usuario (como prototype
) con las que realmente no desea meterse.
Usted tiene las llaves del objeto en una matriz. Ejecuta el filtro sobre él.
var myObj={105:true,183:false,108:true,106:false};
var result = Object.keys(myObj).filter(function(x) {
return myObj[x] !== false;
});
// result = ["105", "108"]
También puede usar este paquete de NPM o importar este objeto de código abierto -clean que limpia todas las propiedades de los objetos que contienen un valor de falsy y devuelve un nuevo objeto sin ellos.
Ejemplo:
clean({ foo: null, bar: ''foo'' }) // => { bar: ''foo'' }