Todoslos lenguajes de programacin tienen estructuras de datos integradas, pero estas a menudo difieren de un lenguaje a otro. Este artculo intenta enumerar las estructuras de datos integradas disponibles en JavaScript y las propiedades que tienen. Estas se pueden utilizar para construir otras estructuras de datos. Siempre que es posible, se hacen comparaciones con otros lenguajes.
JavaScript es un lenguaje dbilmente tipado y dinmico. Las variables en JavaScript no estn asociadas directamente con ningn tipo de valor en particular, y a cualquier variable se le puede asignar (y reasignar) valores de todos los tipos:
Ten en cuenta que el nico propsito valioso del uso del operador typeof es verificar el tipo de dato. Si deseamos verificar cualquier Tipo Estructural derivado de Object, no tiene sentido usar typeof para eso, ya que siempre recibiremos "object". La forma correcta de comprobar qu tipo de Objeto estamos usando es la palabra clave instanceof. Pero incluso en ese caso, puede haber conceptos errneos.
Todos los tipos, excepto los objetos, definen valores inmutables (es decir, valores que no se pueden cambiar). Por ejemplo (y a diferencia de C), las cadenas son inmutables. Nos referimos a los valores de estos tipos como "valores primitivos".
Nota: A partir de ECMAScript 2015, tambin puedes comprobar si un nmero est en el rango de nmeros de punto flotante de doble precisin mediante Number.isSafeInteger() as como Number.MAX_SAFE_INTEGER y
Number.MIN_SAFE_INTEGER.Ms all de este rango, los enteros en JavaScript ya no son seguros y sern una aproximacin de punto flotante de doble precisin del valor.
Nota: Aunque los operadores bit a bit se pueden usar para representar mltiples valores Booleanos dentro de un solo nmero usando el enmascaramiento de bits, esto generalmente se considera una mala prctica. JavaScript ofrece otros medios para representar un conjunto de valores booleanos (como un arreglo de valores booleanos o un objeto con valores booleanos asignados a propiedades con nombre). El enmascaramiento de bits tambin tiende a hacer que el cdigo sea ms difcil de leer, comprender y mantener.
Posiblemente sea necesario utilizar estas tcnicas en entornos muy restringidos, como cuando se intenta hacer frente a las limitaciones del almacenamiento local, o en casos extremos (como cuando cada bit de la red cuenta). Esta tcnica solo se debe considerar cuando sea la ltima medida que se pueda tomar para optimizar el tamao.
El tipo BigInt es un primitivo numrico en JavaScript que puede representar nmeros enteros con precisin arbitraria. Con BigInts, puedes almacenar y operar de forma segura en nmeros enteros grandes incluso ms all del lmite seguro de enteros para Numbers.
Puedes obtener el valor ms seguro que se puede incrementar con Numbers utilizando la constante Number.MAX_SAFE_INTEGER. Con la introduccin de BigInts, puedes operar con nmeros ms all de Number.MAX_SAFE_INTEGER.
El tipo String de JavaScript se utiliza para representar datos textuales. Es un conjunto de "elementos" de valores enteros sin signo de 16 bits. Cada elemento del String ocupa una posicin en la cadena. El primer elemento est en el ndice 0, el siguiente en el ndice 1, y as sucesivamente. La longitud de una cadena es el nmero de elementos que contiene.
Con las convenciones, es posible representar cualquier estructura de datos en una cadena. Esto no la convierte en una buena idea. Por ejemplo, con un separador, se podra emular una lista (mientras que un arreglo de JavaScript sera ms adecuado). Desafortunadamente, cuando el separador se usa en uno de los elementos de la "lista", la lista se rompe. Se puede elegir un caracter de escape, etc. Todo esto requiere convenciones y crea una innecesaria carga de mantenimiento.
Un smbolo es un valor primitivo nico e inmutable y se puede utilizar como clave de una propiedad de objeto (ve ms abajo). En algunos lenguajes de programacin, los smbolos se denominan "tomos".
En JavaScript, los objetos se pueden ver como una coleccin de propiedades. Con la sintaxis de objeto literal, se inicia un conjunto limitado de propiedades; luego se pueden agregar y eliminar propiedades. Los valores de propiedad pueden ser valores de cualquier tipo, incluidos otros objetos, lo que permite construir estructuras de datos complejas. Las propiedades se identifican mediante valores clave. Un valor clave es un valor de cadena o un smbolo.
Nota: Cada propiedad tiene atributos correspondientes. Los atributos, internamente los utiliza el motor JavaScript, por lo que no puedes acceder a ellos directamente. Es por eso que los atributos se enumeran entre corchetes dobles, en lugar de simples.Consulta Object.defineProperty() para obtener ms informacin.
Un objeto JavaScript es una asociacin entre claves y valores. Las claves son cadenas (o Symbols), y los valores pueden ser cualquier cosa. Esto hace que los objetos se ajusten naturalmente a hashmaps.
Adems, los arreglos heredan de Array.prototype, que les proporciona un puado de convenientes mtodos para manipular arreglos. Por ejemplo, indexOf (buscando un valor en el arreglo) o push (agrega un elemento al arreglo), y as sucesivamente. Esto hace que el Array sea un candidato perfecto para representar listas o conjuntos.
Los Arreglos tipados son nuevos en JavaScript con ECMAScript 2015 y presentan una vista similar a un arreglo de un bfer de datos binarios subyacente. La siguiente tabla ayuda a determinar los tipos de datos equivalentes en C:
Estas estructuras de datos, introducidas en ECMAScript Edition 6, toman referencias a objetos como claves. Set y WeakSet representan un conjunto de objetos, mientras que Map y WeakMap se asocian un valor a un objeto.
Por lo general, para vincular datos a un nodo DOM, se pueden establecer propiedades directamente en el objeto o usar atributos data-*. Esto tiene la desventaja de que los datos estn disponibles para cualquier script que se ejecute en el mismo contexto. Los Maps y WeakMaps facilitan la vinculacin privada de datos a un objeto.
Ten en cuenta que el nico propsito valioso del uso del operador typeof es verificar el tipo de dato. Si deseamos verificar cualquier Tipo Estructural derivado de Object, no tiene sentido usar typeof para eso, ya que siempre recibiremos \"object\". La forma correcta de comprobar qu tipo de Objeto estamos usando es la palabra clave instanceof. Pero incluso en ese caso, puede haber conceptos errneos.
Todos los tipos, excepto los objetos, definen valores inmutables (es decir, valores que no se pueden cambiar). Por ejemplo (y a diferencia de C), las cadenas son inmutables. Nos referimos a los valores de estos tipos como \"valores primitivos\".
El tipo String de JavaScript se utiliza para representar datos textuales. Es un conjunto de \"elementos\" de valores enteros sin signo de 16 bits. Cada elemento del String ocupa una posicin en la cadena. El primer elemento est en el ndice 0, el siguiente en el ndice 1, y as sucesivamente. La longitud de una cadena es el nmero de elementos que contiene.
Con las convenciones, es posible representar cualquier estructura de datos en una cadena. Esto no la convierte en una buena idea. Por ejemplo, con un separador, se podra emular una lista (mientras que un arreglo de JavaScript sera ms adecuado). Desafortunadamente, cuando el separador se usa en uno de los elementos de la \"lista\", la lista se rompe. Se puede elegir un caracter de escape, etc. Todo esto requiere convenciones y crea una innecesaria carga de mantenimiento.
Un smbolo es un valor primitivo nico e inmutable y se puede utilizar como clave de una propiedad de objeto (ve ms abajo). En algunos lenguajes de programacin, los smbolos se denominan \"tomos\".
3a8082e126