saber recorrer objetos objeto metodos existe eliminar elemento buscar array agregar javascript object

metodos - recorrer array de objetos javascript



¿Cómo verificar si la propiedad del objeto existe con una variable que contiene el nombre de la propiedad? (7)

Gracias por la ayuda de todos y por presionar para deshacerse de la declaración de evaluación. Las variables debían estar entre paréntesis, no con notación de puntos. Esto funciona y está limpio, código correcto.

Cada una de estas son variables: appChoice, underI, underObstr.

if(typeof tData.tonicdata[appChoice][underI][underObstr] !== "undefined"){ //enter code here }

Esta pregunta ya tiene una respuesta aquí:

Estoy comprobando la existencia de una propiedad de objeto con una variable que contiene el nombre de propiedad en cuestión.

var myObj; myObj.prop = "exists"; var myProp = "p"+"r"+"o"+"p"; if(myObj.myProp){ alert("yes, i have that property"); };

Esto undefined está undefined porque está buscando myObj.myProp pero quiero que myObj.prop


Para propiedad propia:

var loan = { amount: 150 }; if(Object.prototype.hasOwnProperty.call(loan, "amount")) { //will execute }

Nota: usar Object.prototype.hasOwnProperty es mejor que loan.hasOwnProperty (..), en caso de que se haya personalizado hasOwnProperty en la cadena de prototipos (que no es el caso aquí), como

var foo = { hasOwnProperty: function() { return false; }, bar: ''Here be dragons'' };

// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

Para incluir propiedades heredadas en el hallazgo, use el operador in : (pero debe colocar un objeto en el lado derecho de ''in'', los valores primitivos arrojarán un error, por ejemplo, ''length'' en ''home'' arrojará un error, pero ''length'' en nueva cadena (''home'') no

const yoshi = { skulk: true }; const hattori = { sneak: true }; const kuma = { creep: true }; if ("skulk" in yoshi) console.log("Yoshi can skulk"); if (!("sneak" in yoshi)) console.log("Yoshi cannot sneak"); if (!("creep" in yoshi)) console.log("Yoshi cannot creep"); Object.setPrototypeOf(yoshi, hattori); if ("sneak" in yoshi) console.log("Yoshi can now sneak"); if (!("creep" in hattori)) console.log("Hattori cannot creep"); Object.setPrototypeOf(hattori, kuma); if ("creep" in hattori) console.log("Hattori can now creep"); if ("creep" in yoshi) console.log("Yoshi can also creep");

// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in

Nota: Uno puede sentirse tentado a usar el acceso a la propiedad typeof y [] como el siguiente código que no siempre funciona ...

var loan = { amount: 150 }; loan.installment = undefined; if("installment" in loan) // correct { // will execute } if(typeof loan["installment"] !== "undefined") // incorrect { // will not execute }


Puede usar hasOwnProperty() así como in operador.



Una forma mucho más segura de verificar si existe una propiedad en el objeto es usar un objeto vacío o un prototipo de objeto para llamar a hasOwnProperty()

var foo = { hasOwnProperty: function() { return false; }, bar: ''Here be dragons'' }; foo.hasOwnProperty(''bar''); // always returns false // Use another Object''s hasOwnProperty and call it with ''this'' set to foo ({}).hasOwnProperty.call(foo, ''bar''); // true // It''s also possible to use the hasOwnProperty property from the Object // prototype for this purpose Object.prototype.hasOwnProperty.call(foo, ''bar''); // true

Referencia de documentos web de MDN - Object.prototype.hasOwnProperty ()


if(myObj[myProp]) { `enter code here` }


var myProp = ''prop''; if(myObj.hasOwnProperty(myProp)){ alert("yes, i have that property"); }

O

var myProp = ''prop''; if(myProp in myObj){ alert("yes, i have that property");

O

if(''prop'' in myObj){ alert("yes, i have that property"); }