Foros del Web » Programando para Internet » Javascript »

array asociativo añade errores

Estas en el tema de array asociativo añade errores en el foro de Javascript en Foros del Web. Antes que nada gracias por molestarse en ayudarme. Mi problema es el siguiente, creo un array asociativo porque luego lo tengo que convertir en un ...
  #1 (permalink)  
Antiguo 04/12/2011, 12:39
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
array asociativo añade errores

Antes que nada gracias por molestarse en ayudarme.

Mi problema es el siguiente, creo un array asociativo porque luego lo tengo que convertir en un JSON, pero el problema es que al intentar recorrerlo para hacer una comprobación, pero en vez de recorrer solo los datos que tienes, recorre dos mas, que son errores. Pero lo mas curioso es que esos errores solo me aparecen cuando los cuelgo en mi servidor,si lo ejecuto en mi servidor local no me da ningún error, me funciona a las mil maravillas...y lo que necesito es que aparezcan esos errores.





function MiFuncion ()
{
//estas variables en mi programa estan definidas como globlales y se les da el valor en otras funciones
var Var1=null;
var Var2=1;
var Var3=null;

var tema={"Variable_1" : Var1,"Variable_2" : Var2,"Variable_3" : Var3};
var hayalgo=0;
//para esto se necesita la libreria JSON.js
var Cadena= JSON.stringify(tema);
for( var indice in tema )//recorro el array
{
alert(indice+"="+tema[indice]);//aquí ademas de enseñarme lo que hay en el array "tema" me enseña dos errores mas y no se por que es
}

}
  #2 (permalink)  
Antiguo 04/12/2011, 13:04
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: array asociativo añade errores

buenas,
lo que sucede es que el bucle for/in, además de iterar por las propiedades de un objeto, también itera sobre algunas propiedades del prototipo de dicho objeto. aunque tu no las defines, estan ahí. lo que debes hacer es determinar si la propiedad actual es una propiedad que pertenece directamente al objeto en si. lo logras utilizando el método hasOwnProperty de los objetos. este devuelve un boolean donde true indica que dicha propiedad le pertenece al objeto.

Código:
if(!object.hasOwnProperty("propertyName")) continue;
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 04/12/2011, 13:04
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: array asociativo añade errores

esto es lo que me muestra en el alert despues de recorrer los valores del array:

tojsonstringify=Function (filter){
return JSON.stringify(this.filter)
}


parseJOHN=Function (filter){
return JSON.parse(this.filter)
}

llevo unos cunatos dias peleandome con esto y no lo doy resuelto!
  #4 (permalink)  
Antiguo 04/12/2011, 13:17
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: array asociativo añade errores

Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
lo que sucede es que el bucle for/in, además de iterar por las propiedades de un objeto, también itera sobre algunas propiedades del prototipo de dicho objeto. aunque tu no las defines, estan ahí. lo que debes hacer es determinar si la propiedad actual es una propiedad que pertenece directamente al objeto en si. lo logras utilizando el método hasOwnProperty de los objetos. este devuelve un boolean donde true indica que dicha propiedad le pertenece al objeto.

Código:
if(!object.hasOwnProperty("propertyName")) continue;
y podrías darme un ejemplo de como se utiliza es que me siguen saliendo eso dos mensajes.
  #5 (permalink)  
Antiguo 04/12/2011, 13:26
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: array asociativo añade errores

ya te mostre un ejemplo de como se utiliza. de hecho, estaba adaptado para el bucle for/in. de todos modos, primero un poco de documentacion al respecto. https://developer.mozilla.org/en/Jav...HasOwnProperty
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 04/12/2011, 13:37
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: array asociativo añade errores

Se supone que seria asi no, porque a mi me continúan saliendo esos dichosos mensajes!!! puede que halla algo mal, llevo muchas horas delante de esto, y y estoy .... y gracias por tus rápidas respuestas!!!



function MiFuncion ()
{
//estas variables en mi programa estan definidas como globlales y se les da el valor en otras funciones
var Var1=null;
var Var2=1;
var Var3=null;

var tema={"Variable_1" : Var1,"Variable_2" : Var2,"Variable_3" : Var3};
var hayalgo=0;
//para esto se necesita la libreria JSON.js
var Cadena= JSON.stringify(tema);
for( var indice in tema )//recorro el array
{
if(!tema.hasOwnProperty('indice'))
{
alert(indice+"="+tema[indice]);//aquí ademas de enseñarme lo que hay en el array "tema" me enseña dos errores mas y no se por que es
}
}

}
  #7 (permalink)  
Antiguo 04/12/2011, 13:51
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: array asociativo añade errores

BUUUUUUUUUUUUUUUFFFF!!! lo que yo te diga estaba apapostiado!xD

debería ser asi:

if(tema.hasOwnProperty(indice))

mil gracias!!! llevo dos días con esto!! buuuf!xD
  #8 (permalink)  
Antiguo 04/12/2011, 13:53
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: array asociativo añade errores

fíjate bien lo que puse como cuerpo de la condición: continue. pero también fijate la condición de if. en palabras humanas significa si la propiedad no es del objeto, continua con la siguiente iteración. además, fijate el argumento que le pasas al método, le estas pasando un string literal "indice" en lugar de la variable indice el cual representa el nombre de la propiedad que actualmente esta iterando el bucle. y por último, nótese la estructura que tienes. en tu caso, no debes invertir el booleano devuelto por el método hasOwnProperty porque el cuerpo es lo que quieres interpretar cuando sea una propiedad del objeto.

@edit: bueno.... tarde dos minutos luego de que te dieras cuenta.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: asociativo, errores, funcion, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:35.