Foros del Web » Programando para Internet » Javascript »

array con {llave:valor,llave:valor}

Estas en el tema de array con {llave:valor,llave:valor} en el foro de Javascript en Foros del Web. Hola tengo un array que necesito adicionarle y quitarle elementos de manera dinamica si me pueden aconsejar? me base en este code: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 17/07/2012, 11:26
Avatar de gilber966  
Fecha de Ingreso: abril-2010
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
array con {llave:valor,llave:valor}

Hola tengo un array que necesito adicionarle y quitarle elementos de manera dinamica si me pueden aconsejar?


me base en este code:

Código Javascript:
Ver original
  1. var pais = new array();
  2.  
  3. pais[0] = {pais:"España",
  4.         capital:"Madrid",
  5.          continente:"Europa"}
  6. pais[1] = {pais:"Japón",
  7.         capital:"Tokio",
  8.         continente:"Asia"}
  9. pais[2] = {pais:"Francia",
  10.         capital:"Paris",
  11.         continente:"Europa"}

es posible por ejemplo adicionar asi:

Código Javascript:
Ver original
  1. nuevoelemento=function(npais,ncapital,ncontinente){
  2. for(var i=0; i<=pais.lenght;i++){
  3.  
  4.   if(pais[i].npais){
  5. //ya existe un elemento, modificarlo
  6.  
  7. }else{//adicionarlo
  8. pais.push(pais[pais.lenght+1]={pais:npais,capital:ncapital,continente:ncontinente});
  9. }
  10.  
  11.  
  12. }

}

y asi por el estilo para eliminar??
  #2 (permalink)  
Antiguo 17/07/2012, 11:36
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: array con {llave:valor,llave:valor}

Tenés una ensalada de conceptos en la cabeza.

Partamos de cero, que problema querés solucionar, y como lo resolverias (coloquialmente, sin código)?
__________________
blog | @aijoona
  #3 (permalink)  
Antiguo 17/07/2012, 13:34
Avatar de gilber966  
Fecha de Ingreso: abril-2010
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: array con {llave:valor,llave:valor}

Cita:
Iniciado por Aijoona Ver Mensaje
Tenés una ensalada de conceptos en la cabeza.

Partamos de cero, que problema querés solucionar, y como lo resolverias (coloquialmente, sin código)?

jeje asi parece, pero yo puedo acceder al los elemento asi:


x=2;
elarray[x].id;//y asi accedo a los datos

es un juego y en el sistema de colisiones cada elemento se guarda en el array mientras este en pantalla, en un momento determinado los protagonistas buscan en el array si hay un elemento (enemigo) que coincida con unas variables determinadas, y ya me funciona, solo que no se borra bien del array, y aunque adiciona solo busca en el primer registro.



Bueno esto ultimo no es nada

en palabras coloquiales un enemigo (las minas) cuando se crean se guardan en el array, se guarda su posicion en x y su id, despues en ese array se busca si alguna mina esta en la posicion de un soldado, si esta desaparecen ambos y si no ps nada no pasa nada y el programa sigue ejecutandose


el code lo saque de aqui

Última edición por gilber966; 17/07/2012 a las 13:59
  #4 (permalink)  
Antiguo 17/07/2012, 19:53
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: array con {llave:valor,llave:valor}

Los arrays en JS únicamente pueden contener keys númericas, caso contrario estás asignando properties al objeto y no elements al array.

Con respecto a tu problema, no entendí bien (y tampoco leí el link), me agarraste de buen humor, post-cervezas, por lo cual te adjunto código (no testeado) de ejemplo potencialmente relacionado a tu problema (puede que no tenga nada que ver):

Código Javascript:
Ver original
  1. var app = {};
  2.  
  3. app.places = [
  4.     {
  5.         country:"España",
  6.         capital:"Madrid",
  7.         continent:"Europa"
  8.     },
  9.     {
  10.         country:"Japón",
  11.         capital:"Tokio",
  12.         continent:"Asia"
  13.     },
  14.     {
  15.         country:"Francia",
  16.         capital:"Paris",
  17.         continent:"Europa"
  18.     }
  19. ];
  20.  
  21. app.deleteByCondition = function(key, value) {
  22.     for(var i = 0; i < app.places.length; i++) {
  23.         if(app.places[i][key] == value) {
  24.             app.places.splice(i, 1);
  25.             i--;
  26.         }
  27.     }
  28. };
  29.  
  30. app.deleteByCountry = function(country) {
  31.     app.deleteByCondition('country', country);
  32. };
  33.  
  34. app.deleteByCapital = function(capital) {
  35.     app.deleteByCondition('capital', capital);
  36. };
  37.  
  38. app.deleteByContinent = function(continent) {
  39.     app.deleteByCondition('continent', continent);
  40. };
  41.  
  42. app.get = function(key, value) {
  43.     for(var i = 0; i < app.places.length; i++) {
  44.         if(app.places[i][key] == value) {
  45.             return app.places[i];
  46.         }
  47.     }  
  48.     return null;
  49. };
  50.  
  51. app.getByCountry = function(country) {
  52.     return app.exists('country', country);
  53. };
  54.  
  55. app.getByCapital = function(capital) {
  56.     return app.exists('capital', capital);
  57. };
  58.  
  59. app.getByContinent = function(continent) {
  60.     return app.exists('continent', continent);
  61. };
  62.  
  63. app.countryExists = function(country) {
  64.     return app.exists('country', country) !== null;
  65. };
  66.  
  67. app.capitalExists = function(capital) {
  68.     return app.exists('capital', capital) !== null;
  69. };
  70.  
  71. app.continentExists = function(continent) {
  72.     return app.exists('continent', continent) !== null;
  73. };

Con eso, debería serte sencillo verificar y eliminar registros de la colección con una semantica más acorde a tu lógica de negocios.
__________________
blog | @aijoona
  #5 (permalink)  
Antiguo 18/07/2012, 18:18
Avatar de gilber966  
Fecha de Ingreso: abril-2010
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: array con {llave:valor,llave:valor}

Cita:
Iniciado por Aijoona Ver Mensaje
Los arrays en JS únicamente pueden contener keys númericas, caso contrario estás asignando properties al objeto y no elements al array.

Con respecto a tu problema, no entendí bien (y tampoco leí el link), me agarraste de buen humor, post-cervezas, por lo cual te adjunto código (no testeado) de ejemplo potencialmente relacionado a tu problema (puede que no tenga nada que ver):

Código Javascript:
Ver original
  1. var app = {};
  2.  
  3. app.places = [
  4.     {
  5.         country:"España",
  6.         capital:"Madrid",
  7.         continent:"Europa"
  8.     },
  9.     {
  10.         country:"Japón",
  11.         capital:"Tokio",
  12.         continent:"Asia"
  13.     },
  14.     {
  15.         country:"Francia",
  16.         capital:"Paris",
  17.         continent:"Europa"
  18.     }
  19. ];
  20.  
  21. app.deleteByCondition = function(key, value) {
  22.     for(var i = 0; i < app.places.length; i++) {
  23.         if(app.places[i][key] == value) {
  24.             app.places.splice(i, 1);
  25.             i--;
  26.         }
  27.     }
  28. };
  29.  
  30. app.deleteByCountry = function(country) {
  31.     app.deleteByCondition('country', country);
  32. };
  33.  
  34. app.deleteByCapital = function(capital) {
  35.     app.deleteByCondition('capital', capital);
  36. };
  37.  
  38. app.deleteByContinent = function(continent) {
  39.     app.deleteByCondition('continent', continent);
  40. };
  41.  
  42. app.get = function(key, value) {
  43.     for(var i = 0; i < app.places.length; i++) {
  44.         if(app.places[i][key] == value) {
  45.             return app.places[i];
  46.         }
  47.     }  
  48.     return null;
  49. };
  50.  
  51. app.getByCountry = function(country) {
  52.     return app.exists('country', country);
  53. };
  54.  
  55. app.getByCapital = function(capital) {
  56.     return app.exists('capital', capital);
  57. };
  58.  
  59. app.getByContinent = function(continent) {
  60.     return app.exists('continent', continent);
  61. };
  62.  
  63. app.countryExists = function(country) {
  64.     return app.exists('country', country) !== null;
  65. };
  66.  
  67. app.capitalExists = function(capital) {
  68.     return app.exists('capital', capital) !== null;
  69. };
  70.  
  71. app.continentExists = function(continent) {
  72.     return app.exists('continent', continent) !== null;
  73. };

Con eso, debería serte sencillo verificar y eliminar registros de la colección con una semantica más acorde a tu lógica de negocios.

Muchisimas gracias, voy a estudiar el code que me has proporcionado, comentare los resultados
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 17:33.