lista - recorrer array de objetos javascript
Obtener el nombre de la propiedad del objeto (11)
A partir de 2018, puede hacer uso de Object.getOwnPropertyNames()
como se describe en Developer Mozilla Documentation
const object1 = {
a: 1,
b: 2,
c: 3
};
console.log(Object.getOwnPropertyNames(object1));
// expected output: Array ["a", "b", "c"]
Me preguntaba si había alguna forma en JavaScript para recorrer un objeto como ese.
for(var i in myObject) {
// ...
}
Pero obtenga el nombre de cada propiedad de esta manera.
for(var i in myObject) {
separateObj[myObject[i].name] = myObject[i];
}
Parece que no puedo encontrar nada parecido en Google. Dicen que les pasa los nombres de las variables, pero esta no es una opción para lo que estoy tratando de lograr.
Gracias por cualquier ayuda que pueda ofrecer.
Cuando haces el ciclo for / in que pones primero, yo soy el nombre de la propiedad. Entonces tiene el nombre de propiedad, i, y accede al valor haciendo myObject [i].
EN ES5
EG tienes este tipo de objeto:
var ELEMENTS = {
STEP_ELEMENT: { ID: "0", imageName: "el_0.png" },
GREEN_ELEMENT: { ID: "1", imageName: "el_1.png" },
BLUE_ELEMENT: { ID: "2", imageName: "el_2.png" },
ORANGE_ELEMENT: { ID: "3", imageName: "el_3.png" },
PURPLE_ELEMENT: { ID: "4", imageName: "el_4.png" },
YELLOW_ELEMENT: { ID: "5", imageName: "el_5.png" }
};
Y ahora si quieres tener una función que si pasas ''0'' como param - para obtener ''STEP_ELEMENT'', si ''2'' para obtener ''BLUE_ELEMENT'' y así sucesivamente
function(elementId) {
var element = null;
Object.keys(ELEMENTS).forEach(function(key) {
if(ELEMENTS[key].ID === elementId.toString()){
element = key;
return;
}
});
return element;
}
Probablemente esta no sea la mejor solución al problema, pero es bueno darte una idea de cómo hacerlo.
Aclamaciones.
Estas soluciones también funcionan.
// Solution One
function removeProperty(obj, prop) {
var bool;
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
if (keys[i] === prop) {
delete obj[prop];
bool = true;
}
}
return Boolean(bool);
}
//Solution two
function removeProperty(obj, prop) {
var bool;
if (obj.hasOwnProperty(prop)) {
bool = true;
delete obj[prop];
}
return Boolean(bool);
}
Para obtener la propiedad del objeto o la "clave de matriz" o "índice de matriz" dependiendo de cuál es su idioma nativo ..... Utilice el método Object.keys ().
Importante, esto solo es compatible con "navegadores modernos":
Entonces, si se llama a su objeto, myObject ...
var c = 0;
for(c in myObject) {
console.log(Object.keys(myObject[c]));
}
Walla! Esto definitivamente funcionará en los últimos Firefox y ie11 y Chrome ...
Aquí hay alguna documentación en MDN Object.keys():
Rápido y sucio:
function getObjName(obj) {
return (wrap={obj}) && eval(''for(p in obj){p}'') && (wrap=null);
}
Use Object.keys():
var keyNames = Object.keys(myObject);
console.log(keyNames);
Object.keys()
le proporciona una matriz de nombres de propiedades que pertenecen al objeto de entrada.
para acceso directo a una propiedad de objeto por posición ... generalmente útil para propoerty [0] ... por lo que contiene información sobre el futuro ... o en node.js ''require.cache [0]'' para el primer módulo externo cargado , etcétera etcétera.
Object.keys (myObject) [0] Object.keys (myObject) [1] ... Object.keys (myObject) [n]
puedes iterar fácilmente en objetos
ej .: si el objeto es var a = {a: ''apple'', b: ''ball'', c: ''cat'', d: ''doll'', e: ''elephant''};
Object.keys(a).forEach(key => {
console.log(key) // returns the keys in an object
console.log(a[key]) // returns the appropriate value
})
i
soy el nombre
for(var name in obj) {
alert(name);
var value = obj[name];
alert(value);
}
Entonces podrías hacer:
seperateObj[i] = myObject[i];
Descargo de responsabilidad No entendí bien la pregunta: "¿Puedo saber el nombre de la propiedad a la que se adjuntó un objeto?", Pero decidí dejar la respuesta ya que algunas personas pueden terminar aquí mientras buscan eso.
No, un objeto se puede unir a propiedades múltiples, por lo que no tiene forma de saber su nombre.
var obj = {a:1};
var a = {x: obj, y: obj}
¿Cuál sería el nombre de obj?
¿Estás seguro de que no solo quieres el nombre de la propiedad del ciclo for?
for (var propName in obj) {
console.log("Iterating through prop with name", propName, " its value is ", obj[propName])
}