entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

4votos

como manipular los items de un array

tengo un problema que no puedo resolver, lo explico lo mas claro posible para que lo puedan entender.
tengo dos paginas en la primera tengo un array donde almaceno valores numericos, estos son enviados por medio de unos botones, ej. botton onclick=agregar_item(10)
surge un incoveniente cuando quiero enviar esos valores a mi segunda pagina pero es resolvible haciendo uso de la webstorage en mi caso utilizo sessionstorage porque quiero que mi array permanezca vivo, de este modo lo puedo llamar en mi segunda pagina.
es aqui donde surge el problema, el unico tipo de dato que puede almacenar en sesion son cadenas, entonces mi idea fue convertir mi array en una cadena con la funcion
toString, luego en mi segunda pagina lo recupero y con la funcion split recupero mi array, es aqui mi problema, split convierte mi array de numeros en un array de cadenas
por lo que si antes mi array numerico era [10,20,30] pasa a ser ["10","20","30"]

1 Respuesta

2votos

magarzon Puntos19290

Usa JSON.stringify() cuando vayas a guardarlo y JSON.parse() cuando vayas a recuperarlo.

Por ejemplo:

var test = [10,20,30];

//Guardar
sessionStorage.test = JSON.stringify(test);

//Recuperar

var test2 = JSON.parse(sessionStorage.test);

magarzon comentado Dic 18, 2016

Por partes:
El método filter tiene como argumento una función (callback). Si pones typeof="string" eso no es una función, pero incluso en el caso de que el método filter aceptara expresiones, aquí estarías asignando (has usado un solo =) o como mucho comparando (si usaras ==) una variable con nombre typeof (que no está definida) con "string".

Los tipos primitivos se puede convertir a objetos, y normalmente los operadores (por ejemplo +, -) están preparados para trabajar tanto con tipos primitivos como con objetos, por lo que por lo general no tendrás que preocuparte mucho por saber si son objetos o tipos primitivos, pero si quieres hacerlo, se hace como te he indicado, con typeof y instanceof.

Los métodos que tiene un array en javascript están perfectamente definidos, no hay nada teórico, puedes consultarlos aquí: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array

De todas formas, yo suelo utilizar lodash, una librería que te ofrece muchísimas opciones para trabajar con arrays, strings y más cosas.

En cuanto a los métodos para trabajar con objetos... pues depende de qué clase sea el objeto, porque la clase es la que define qué metodos pueden aplicarse a un objeto, teniendo por otra parte javascript la peculiaridad de que puedes extender o añadir métodos y campos a una clase u objeto en tiempo de ejecución.

steven comentado Dic 18, 2016

resumiendo todo, los metodos para los arrays que mencione solo aceptan funciones con callbacks(no me quedo claro esto del callback, cual es la diferencia entre una funcion normal con argumentos)
aparte esto se que hay funciones que cuando terminan pasan a otras funciones
lo he visto en un articulo de nodejs, creo que se llama funciones asincronas estan relacionadas con un termino thread que creo que se trate de la memoria

regresando al tema de los metodos, lastima que no acepten expresiones, seria todo mas sencillo y eficiente.

luego para terminar, distinguir entre un objeto y un tipo primitivo es cuestion de utilizar la funcion typeof y instanceof(esta funcion no devuelve ningun valor)

magarzon comentado Dic 18, 2016

No te líes.

callback es, en este caso, simplemente una función que es pasada como argumento a otra función (en este caso la función filter) para que sea llamada en determinadas condiciones y con unos argumentos definidos.

No te líes con nodejs, funcionas asíncronas y threads si todavía no manejas los conceptos básicos de programación y/o javascript, porque te vas confundir más.

Aunque no lo creas, es más sencillo y eficiente que determinados métodos acepten callbacks y no expresiones. De todas formas, puedes construir funciones que acepten "expresiones", pero te tienes que construir también tu analizador de expresiones. Lodash, la librería que te recomendé antes, en cierto modo tiene algo parecido.

Y por aclarar, typeof e instanceof no son funciones, son operadores, como pueden serlo el + o el -, dado 1 valor (en el caso de typeof) o dos (en el caso de instanceof) te devuelve un resultado (una cadena con el tipo en el caso de typeof, un true o false en el caso de instanceof). Si bien es verdad que typeof también podría ser considerado una función (de hecho se le puede llamar con paréntesis)

steven comentado Dic 18, 2016

como es de complicada la programacion, cuando crees haber entendido una cosa que aparecen otras cosas y pareciera que nunca lo entenderas por completo
bueno creo que es solo cuestion de interpretacion para no perderse en el camino, a proposito de lodash me parece un proyecto genial ,pero requiere un conocimiento avanzado, por lo que todavia no esta a mi alcanze, ademas toda la documentacion esta en ingles y no hay muchos videotutos.

es increible la cantidad de librerias que hay por la red y a la vez extrano que no exista ninguno en lingua hispana.

me gustaria poder charlar contigo mas seguido, te saludo hasta la proxima pregunta

magarzon comentado Dic 18, 2016

La programación es un campo que requiere autoformación constante.

Yo llevo más de 20 años en esto, he aprendido/utilizado unos 10 lenguajes diferentes y otras tantas tecnologías asociadas (bases de datos, sistemas de mensajería...) y todavía no hay día que no aprenda algo nuevo.

Eso sí, lo mejor es tener una buena base, y a ser posible, saber inglés, porque la mayor parte de la documentación, y sobre todo de la buena documentación, va a estar exclusivamente en inglés.

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta