Arreglos multidimensionales en ejemplos de javascript. Matriz de JavaScript y su creación. Todo sobre las matrices de JavaScript

Se puede trabajar con matrices a través de varios métodos proporcionados por el constructor de matrices.

Métodos pop/push y shift/unshift

Veamos los métodos pop() y push(). Estos métodos le permiten trabajar con matrices como si fueran pilas. Una pila es una estructura de datos en la que el acceso a los elementos se organiza según el principio LIFO (último en entrar, primero en salir). El principio de funcionamiento de la pila se puede comparar con una pila de placas: para tomar la segunda de arriba, es necesario quitar la superior. Cómo funciona se muestra en la figura:

Entonces volvamos a mirar los métodos push() y pop(). El método push() agrega uno o más elementos nuevos al final de la matriz y devuelve su nueva longitud. Método pop(): elimina el último elemento de la matriz, reduce la longitud de la matriz y devuelve el valor que eliminó. Vale la pena señalar que ambos métodos modifican la matriz en su lugar, en lugar de crear una copia modificada de la misma.

Varfoo = ; // foo: foo.push(1,2); // foo: Devuelve 2 foo.pop(); // foo: Devuelve 2 foo.push(3); // foo: Devuelve 2 foo.pop(); // foo: Devuelve 3 foo.push(); // foo: ] Devuelve 2 foo.pop() // foo: Devuelve foo.pop(); // foo: Devuelve 1 var frutas = ["peras", "plátanos", "manzanas"]; var elegido = frutas.pop(); document.write("Tú elegiste mi " + elegiste);

Intentar "

Los métodos shift() y unshift() se comportan de forma muy parecida a pop() y push(), excepto que insertan y eliminan elementos al principio de la matriz. El método unshift() cambia los elementos existentes a índices más grandes para dejar espacio para nuevos elementos, agrega uno o más elementos al comienzo de la matriz y devuelve la nueva longitud de la matriz. El método shift() elimina el primer elemento de una matriz y devuelve su valor, desplazando todos los elementos posteriores para ocupar el espacio libre al comienzo de la matriz.

Var f = ; // f: f.unshift(1); // f: Devuelve: 1 f.unshift(22); // f: Devuelve: 2 f.shift(); // f: Devuelve: 22 f.unshift(3,); // f:,1] Devuelve: 3 f.shift(); // f:[,1] Devuelve: 3 f.shift(); // f: Devuelve: f.shift(); // f: Devuelve: 1

El método Array.join() se utiliza para unir los elementos de una matriz en una sola cadena. Al método se le puede pasar un argumento de cadena opcional, que se utilizará para separar elementos de la cadena. Si no se especifica el delimitador, el carácter delimitador predeterminado al llamar al método será una coma.

Var a = ["Viento","Lluvia","Fuego"]; var miVar1 = a.join(); //"Viento,Lluvia,Fuego" var myVar2 = a.join(", "); //"Viento, Lluvia, Fuego" var myVar3 = a.join(" + "); //"Viento + Lluvia + Fuego" document.write(myVar1 + "
" + miVar2 + "
" + myVar3); Pruebe "

El método Array.join() es el inverso del método String.split(), que crea una matriz dividiendo una cadena en fragmentos.

método inverso

El método Array.reverse() invierte el orden de los elementos en una matriz y devuelve una matriz con los elementos reorganizados. Este método no crea una nueva matriz con elementos reordenados, sino que los reordena en una matriz existente.

Var myArr = ["uno", "dos", "tres"]; document.write(myArr.reverse());

Intentar "

método concat

El método Array.concat() crea y devuelve una nueva matriz que contiene los elementos de la matriz original en la que se llamó a concat(), aumentada secuencialmente con los valores de todos los argumentos pasados ​​a concat(). Si alguno de estos argumentos es en sí mismo una matriz, se agregarán todos sus elementos. Los nombres de las matrices se utilizan como argumentos y se especifican en el orden en que se combinarán sus elementos.

Var a = ; a.concat(4, 5) //Devuelve a.concat(); //lo mismo - devuelve a.concat() //Devuelve

método de clasificación

El método Array.sort() ordena los elementos de la matriz en su lugar y devuelve la matriz ordenada. Si se llama al método sort() sin un argumento, ordena los elementos de la matriz en orden alfabético (convirtiéndolos temporalmente en cadenas para realizar la comparación). El método sort() puede tomar una función de comparación como argumento, que determina el orden de clasificación de los elementos.

Var a = ["Kiwi", "Naranjas", "Peras"]; a.sort(); var s = a.join(", "); //Naranjas, peras, kiwi document.write(s); //ejemplo con números var myArr = ; myArr.sort(); documento.write(myArr); //1,10,2 Intentar »

Para ordenar en un orden que no sea alfabético, puede pasar una función de comparación como argumento al método sort(). Sin embargo, hay que tener en cuenta que la función de comparación la tendrás que escribir tú mismo. Esta función debe tener dos parámetros porque establece cuál de sus dos argumentos debe aparecer primero en la lista ordenada. Para que sea más fácil comprender y escribir dicha función, existen varias reglas mediante las cuales se determinará el orden de los elementos:

  • Si el primer argumento debe ir antes del segundo, la función de comparación devuelve un número negativo (si
  • Si el primer argumento debe seguir al segundo, entonces la función de comparación devuelve un número positivo (si a > b)
  • Si dos valores son equivalentes (es decir, su orden no es importante), la función de comparación devuelve 0 (si a == b)

A modo de comparación, la función utiliza elementos de matriz como argumentos:

Función foo(a,b) ( //definir la función de verificación si (a b) devuelve 1; devuelve 0; //si a == b ) var a = ; a.sort(foo); //solo se pasa el nombre de la función como argumento document.write(a.join(", ")); //escribe lo mismo más brevemente var a = ; a.sort(function(a,b) ( //usa la función anónima return a - b; //la función devuelve el valor 0 )); documento.write(a); //1,2,5,10 Intentar »

La primera entrada del ejemplo está escrita de esta manera para que sea más fácil entender cómo funciona. Observe lo conveniente que es utilizar una función anónima en el segundo fragmento. Se llama sólo una vez, por lo que no es necesario darle ningún nombre.

Nota: Si hay elementos no definidos en la matriz, se mueven al final de la matriz.

método de corte

El método Array.slice() se utiliza para copiar una sección específica de una matriz y devuelve una nueva matriz que contiene los elementos copiados. La matriz original no cambia.

Sintaxis del método:

ArrayName.slice(comienzo, fin);

Array_name debe reemplazarse con el nombre de la matriz de la que desea extraer un conjunto específico de elementos para la nueva matriz. El método toma dos argumentos que especifican el principio y el final de la matriz devuelta. El método copia una sección de la matriz, desde el principio hasta el final, sin incluir el final. Si solo se proporciona un argumento, la matriz devuelta contendrá todos los elementos desde la posición especificada hasta el final de la matriz. Puede utilizar índices negativos: se cuentan desde el final de la matriz.

Vararr = ; arr.slice(0,3); //Devuelve arr.slice(3); //Devuelve arr.slice(1,-1); //Devuelve arr.slice(-3,-2); //Devoluciones

método de empalme

El método Array.splice() es un método universal para trabajar con matrices. Modifica la matriz en su lugar en lugar de devolver una nueva matriz modificada como lo hacen los métodos slice() y concat(). El método de empalme puede eliminar elementos de una matriz, insertar nuevos elementos, reemplazar elementos, uno a la vez y simultáneamente. Devuelve una matriz que consta de los elementos eliminados; si no se eliminó ningún elemento, devolverá una matriz vacía.

Sintaxis del método:

Array_name.splice(índice, cantidad, elem1, ..., elemN);

El primer argumento especifica el índice de la matriz en el que comenzar a insertar o eliminar elementos. El segundo argumento especifica la cantidad de elementos que deben eliminarse de la matriz a partir del índice especificado en el primer argumento; si el segundo argumento es 0, no se eliminará ningún elemento; Si se omite el segundo argumento, se eliminan todos los elementos de la matriz desde el índice especificado hasta el final de la matriz. Cuando se utiliza un número de posición negativo, los elementos se contarán desde el final de la matriz.

Var frutas = ["naranjas", "manzanas", "peras", "uvas"]; var eliminado = frutas.splice(2,2); //devuelve ["peras", "uvas"] document.write(eliminado); vararr = ; arr.empalme(4); //Devuelve; la matriz se convirtió en: arr.splice(1,2); //Devuelve; la matriz se convirtió en: arr.splice(1,1); //Devuelve; la matriz se convirtió en: Pruebe »

Los dos primeros argumentos del método splice() especifican los elementos de la matriz que se eliminarán. Estos dos argumentos pueden ir seguidos de cualquier número de argumentos adicionales que especifiquen los elementos que se insertarán en la matriz, comenzando en la posición especificada por el primer argumento.

Var frutas = ["naranjas", "manzanas"]; frutas.splice(2,0, "sandías"); //devuelve document.write(frutas); //se convirtió en ["naranjas", "manzanas", "sandías"] var arr = ; arr.splice(2,0,"a","b"); //Devuelve; se convirtió en arr.splice(2,2,); //Devuelve ["a","b"]; se convirtió en ,3,4,5] Intentar »

Vale la pena señalar que, a diferencia de concat(), el método splice() no divide las matrices pasadas como argumentos en elementos individuales. Es decir, si al método se le pasa una matriz para insertar, inserta la matriz en sí y no los elementos de esa matriz.

método toString

El método toString() convierte los elementos de una matriz en una cadena usando una coma como carácter delimitador.

Var arr = ["Leche","Pan","Galletas"]; var comida = arr.toString(); documento.write(comida); //Leche,Pan,Galletas Pruebe »

Tenga en cuenta que el método devuelve la misma cadena que join() cuando se llama sin argumentos.

índice de y último índice de

El método indexOf devuelve el índice de un elemento cuyo valor es igual al valor pasado como argumento al método.

Sintaxis de los métodos indexOf() y lastIndexOf():

nombre_matriz.indexOf(elemento_búsqueda, índice) nombre_matriz.lastIndexOf(elemento_búsqueda, índice)

El primer argumento del método especifica el valor del elemento cuyo índice se debe encontrar, el segundo argumento (opcional) especifica el índice desde el cual comenzará la búsqueda. Si hay varias apariciones idénticas, se selecciona el índice más pequeño (el primero). Si no se encuentra un elemento con el valor deseado, el método devolverá -1. Dentro del método, se utiliza una comparación estricta (===) para la búsqueda.

Var a = ; a.indexOf(3); //devuelve 2 a.indexOf(3,4); //regresa 6 a.indexOf(35); //return -1: no hay ningún elemento con este valor a.indexOf(2); // 1

El método lastIndexOf() también devuelve el índice del elemento cuyo valor es igual al valor pasado al método como argumento. La única diferencia es que el método lastIndexOf() selecciona el índice más grande (último).

Var a = ; a.lastIndexOf(3); //regresa 7 a.lastIndexOf(35); //return -1: no hay ningún elemento con este valor a.lastIndexOf(2); // 6

Métodos iteradores

Los métodos que se describen a continuación son iteradores. Todos los navegadores modernos tienen métodos para trabajar con matrices que están diseñadas para iterar sobre elementos y realizar diversas acciones sobre ellos. Estos métodos son forEach(), map(), filter(), each(), some, reduce() y reduceRight().

Iteran sobre los elementos de la matriz desde 0 hasta la longitud - 1 y, si el elemento existe, lo pasan a la función del controlador de devolución de llamada.

para cada uno

Sintaxis del método:

ArrayName.forEach(devolución de llamada, thisArg)

El primer argumento especifica la función de devolución de llamada que llamará el método forEach() para cada elemento de la matriz. Debe escribir usted mismo la implementación de la función del controlador llamado. La función llamada debe tener tres parámetros: el primer parámetro toma como argumento el valor del elemento de la matriz, el segundo, el índice del elemento y el tercero, la matriz misma. Sin embargo, si solo necesita usar los valores de los elementos de la matriz, puede escribir una función con un solo parámetro. El segundo argumento, thisArg (opcional), se pasará como valor de this.

Vararr = ; función foo(valor) ( var suma = valor * esto; devolver document.write(suma + "
"); ) arr.forEach(foo, 5); //el segundo argumento se pasará como el valor de este //ejemplo con tres parámetros var a = ; a.forEach(function(el, idx, a) ( documento .write( "a["+idx+"] = "+el+" en ["+a+"]
"); )); Intentar "

filtrar

Sintaxis del método:

Array_name.filter (devolución de llamada, este objeto)

El método filter() crea y devuelve una nueva matriz que contendrá solo aquellos elementos de la matriz para los cuales la función de devolución de llamada devuelve verdadero.

Función isBig(elemento, índice, matriz) ( //devuelve números mayores o iguales a 10 return (elemento >= 10); //si el valor del elemento es mayor o igual a 10, la expresión devolverá verdadero) var filtrado = .filter(isBig); //filtrado

mapa

El método map() crea y devuelve una nueva matriz, que constará de los resultados de llamar a la función callback(item, idx, ar) para cada elemento de la matriz.

Var a = ; var b = a.map(function(item, idx, arr) (devolver item * item;)); // b =

todos y algunos

El método each() devuelve verdadero si, para todos los elementos de la matriz, la función especificada utilizada para verificarlos devuelve verdadero.

El método some() devuelve verdadero si uno o más elementos de la función especificada devuelven verdadero durante la prueba.

Var a = ; a.every(function(x) ( return x 10; )) //verdadero: un número > 10

reducir y reducirDerecha

Sintaxis del método:

nombre_matriz.reduce(devolución de llamada, valor inicial) nombre_matriz.reduceRight(devolución de llamada, valor inicial)

El método reduce() aplica la función de devolución de llamada especificada a dos valores de la matriz a la vez, iterando a través de los elementos de izquierda a derecha, mientras almacena el resultado intermedio.

Argumentos de la función de devolución de llamada: (valor anterior, elemento actual, índice, matriz)

  • valor anterior: el resultado devuelto por la función de devolución de llamada (también conocido como resultado intermedio)
  • currentItem: elemento actual de la matriz (los elementos se ordenan de izquierda a derecha)
  • índice - índice del elemento actual
  • matriz - matriz procesada

valorinicial es el objeto utilizado como primer argumento de la primera llamada a la función de devolución de llamada. En pocas palabras, el valor de valor anterior cuando se llama por primera vez es igual a valor inicial. Si no hay un valor inicial, entonces es igual al primer elemento de la matriz y la búsqueda comienza desde el segundo:

Var a = ; función foo(prevNum,curNum) ( suma = prevNum + curNum; alerta(suma); devolver suma; ) var resultado = a.reduce(foo, 0); documento.write(resultado);

Intentar "

  • Veamos cómo funciona este ejemplo. Los primeros argumentos de la función foo son:
  • prevNum = 0 (ya que el valor inicial es 0)

1 se suma al número 0. Este resultado (suma: 1) se pasará como prevNum la próxima vez que se ejecute la función. Y así sucesivamente hasta llegar al último elemento. El resultado devuelto, la suma de la última ejecución, será 15 (1+2+3+4+5).

El método reduceRight funciona de manera similar al método reduce, pero recorre la matriz de derecha a izquierda:

Vara = ["h","o","m","e"]; barra de funciones(prevStr, curItem) ( return prevStr + curItem; ) document.write(a.reduceRight(bar)); //emoh

Buenos días a todos. Alexey Gulynin está en contacto. En el último artículo analizamos la construcción de la caja del interruptor en javascript. En este artículo me gustaría contarte qué son los arrays en Javascript. El concepto de matriz juega un papel importante no sólo en Javascript, sino en toda la programación. Una variable, como una matriz, no contiene un elemento, sino varios. La sintaxis para crear una matriz es la siguiente:

Var mas = new Array(valor1, valor2,..., valorN);

En este caso se crea una variable de matriz mas con los valores indicados entre paréntesis. Tenga en cuenta que la matriz se crea utilizando la nueva palabra clave. Puede acceder a los elementos de una matriz especificando el nombre de la matriz y el índice de la matriz entre corchetes. El índice de la matriz se establece desde cero. Demos un ejemplo de una matriz que consta de 4 elementos y mostremos el segundo elemento:

var mas = new Array("privet", 1, 10, 5); document.write("Segundo elemento de la matriz = "+mas); //se mostrará el número 10

Si ponemos mas , entonces se imprimirá "privet", ya que la indexación de la matriz comienza desde cero. Ahora descubramos cómo mostrar todos los elementos de una matriz. Para hacer esto necesitas usar un bucle. Además de conocer los bucles en Javascript, necesita conocer la propiedad de longitud de las matrices, que devuelve el número de elementos de una matriz (o, en otras palabras, su longitud). Imprimamos la longitud de la matriz mas:

var mas = new Array("privet", 1, 10, 5); document.write("Longitud de la matriz = "+mas.length); //se mostrará el número 4

Imprimir todos los elementos de la matriz:

var mas = new Array("privet", 1, 10, 5); var i; para (yo = 0; yo< mas.length; i++) document.write(mas[i]+" ");

Hasta ahora hemos analizado matrices unidimensionales. En general, las matrices pueden ser multidimensionales. Lo principal que hay que entender es que, por ejemplo, una matriz bidimensional es una matriz cuyos elementos son matrices. Veamos este problema: necesita crear una matriz bidimensional de 3 por 3, cuyos elementos son especificados por el usuario, y mostrar esta matriz. Aquí usaremos el mensaje del operador para solicitar un número al usuario:

var mas = nueva matriz(); //declarar la matriz const n = 3; //declarar una constante, es decir Nuestra matriz tiene un tamaño de 3 por 3 //para definir una matriz bidimensional, debe usar un bucle doble var i; varj; para (yo = 0; yo< n; i++) { mas[i] = new Array();//Здесь мы как раз каждый элемент массива делаем массивом for (j = 0; j < n; j++) { mas[i][j] = prompt("[" + i +","+j+"]= " ,"..."); //запрашиваем число у пользователя } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { document.write("[" + i +","+j+"]= "+ mas[i][j]);} //выводим элемент массива document.write("
"); // va a una nueva línea después de cada fila completa de la matriz)

En nuestro caso, una matriz bidimensional corresponde (por ejemplo) a la siguiente estructura: mas=[,,] . Puede ver que la matriz tiene 3 elementos, cada uno de los cuales es una matriz en sí misma.

Inicialmente, la tarea de Javascript era crear sitios web dinámicos. En mi práctica, nunca he usado matrices bidimensionales, solo unidimensionales, por lo que el conocimiento sobre matrices que recibió de este artículo será suficiente. En uno de los siguientes artículos hablaré sobre el objeto Array, sus propiedades y métodos.

Aprendamos a indexar matrices en js, eliminar y agregar sus elementos.

Una matriz en JavaScript es un objeto global diseñado para almacenar una lista de valores.

Es similar a otras variables en que puede almacenar cualquier tipo de datos. Pero una matriz tiene una diferencia importante con respecto a una variable: puede almacenar más de un elemento a la vez.

Una matriz es una colección ordenada de valores. Cada valor se llama elemento y tiene su propio número, llamado índice.

Un elemento dentro de una matriz puede ser de cualquier tipo. Además, los elementos de una matriz pueden ser de diferentes tipos: números, cadenas, elementos lógicos e incluso objetos u otras matrices.

El orden de los elementos de la matriz comienza desde 0. Resulta que la matriz siempre tendrá un índice desplazado en uno: el primer elemento tendrá índice 0, el segundo 1, etc.

A continuación se muestra un ejemplo de una matriz con elementos de diferentes tipos:

Crear (declarar) una matriz

Las matrices son muy convenientes porque pueden almacenar tantos datos como necesites. El tamaño máximo posible de una matriz js es 2 32 elementos.

Necesitamos decirle a JavaScript que queremos crear una matriz. Hay dos opciones para esto: el valor entre corchetes o la nueva palabra clave.

Notación corta: uso de corchetes

Una lista de valores separados por comas entre corchetes.

var miArray = [ "Jack", "Sawyer", "John", "Desmond" ];

El contenido de la matriz está determinado por lo que está entre corchetes. Cada valor está separado por una coma.

Los valores se especifican de la misma forma que las variables simples, es decir, las cadenas deben declararse entre comillas, etc.

Para declarar una matriz vacía, deje los paréntesis vacíos:

var miArray = ;

Entrada larga: usando el constructor Array()

var lostArray = new Array("Jack", "Sawyer", "John", "Desmond"); var twinPeaksArray = new Array("Laura", 2, ["Bob", "Leland", "Dale"]);

La nueva palabra clave le dice a JavaScript que cree una nueva matriz cuyos valores se pasan como parámetros.

Si sabe de antemano cuántos elementos habrá en su matriz, puede pasar inmediatamente este valor en el constructor.

var miArray = new Array(80);

La expresión anterior creará una matriz vacía que consta de 80 espacios con valores indefinidos.

Declarando una matriz vacía:

var miArray = nueva matriz();

Accediendo a elementos de matriz

Utilizando el índice de cada elemento, puedes trabajar con cualquier dato del array, accediendo a él mediante el operador:

var myArray = ["Jack", "Sawyer", "John", "Desmond"]; console.log(miMatriz); // Imprime “Jack” console.log(myArray); // Imprime “Desmond”

Una matriz puede tener varios niveles, es decir, cada elemento puede ser en sí mismo una matriz. El resultado será una matriz js bidimensional. ¿Cómo podemos acceder a estas matrices que se encuentran dentro de otras: “matrices multidimensionales”?

Como ejemplo, consideremos una matriz que representa una familia. Los niños de esta familia se registran en una matriz separada dentro de la principal:

var familyArray = ["Marge", "Homero", ["Bart", "Lisa", "Maggie"]];

Puedes imaginarlo así:

Para referirse al valor "Lisa":

var lisa = familyArray; consola.log(lisa); // muestra "Lisa"

Esto puede continuar casi indefinidamente, lo que le permite almacenar conjuntos de datos anidados en matrices y acceder a ellos mediante índices.

Agregar elementos a una matriz

Descubrimos cómo acceder a los elementos de la matriz utilizando sus índices correspondientes. De manera similar, puedes agregar (o cambiar) elementos declarando, por ejemplo:

var myArray = ["Kate", "Sol"]; miArray = "Julieta"; console.log(miMatriz); // Imprime "Kate, Sol, Julieta"

¿Qué sucede si declaro un elemento con un índice que no tiene otros elementos antes? La matriz misma creará todos los elementos faltantes y les asignará el valor indefinido:

var myArray = ["Kate", "Sol"]; miArray = "Julieta"; console.log(myArray.length); // Imprime "6" console.log(myArray); // Imprime ["Kate", "Sung", indefinido, indefinido, indefinido, "Julieta"]

Puede averiguar cuál es la longitud de una matriz js utilizando la propiedad de longitud. En el ejemplo anterior, hay seis elementos en la matriz y a tres de ellos no se les ha asignado un valor; están marcados como indefinidos.

método empujar()

Usando el método push(), puedes agregar uno o más elementos a una matriz js. Push() acepta una cantidad ilimitada de parámetros, todos los cuales se agregarán al final de la matriz.

var miArray = ["Kate", "Sut"]; myArray.push("Julieta"); // Agrega el elemento "Juliet" al final de la matriz myArray.push("Libby", "Shannon" // Agrega los elementos "Libby" y "Shannon" al final de la matriz console.log(myaArray) ); // Imprime ["Kate", "Pronto", "Julieta", "Libby", "Shannon"]

método unshift()

El método unshift() funciona igual que push(), excepto que agrega elementos al comienzo de la matriz.

var myArray = ["Kate", "Sol"]; myArray.unshift("Julieta"); // Agrega el elemento "Juliet" al comienzo de la matriz myArray.unshift("Libby", "Shannon"); // Agrega los elementos "Libby" y "Shannon" al comienzo de la matriz console.log(myArray); // Salidas ["Libby", "Shannon", "Juliet", "Kate", "Pronto"]

Eliminación de elementos de matriz Métodos Pop() y shift()

Los métodos pop() y shift() eliminan el último y el primer elemento de una matriz, respectivamente:

var myArray = ["Jack", "Sawyer", "John", "Desmond", "Kate"]; miArray.pop(); // Elimina el elemento "Kate" myArray.shift(); // Elimina el elemento "Jack" console.log(myArray); // Imprime ["Sawyer", "John", "Desmond"]

método de empalme ()

Usando el método splice(), puede eliminar o agregar elementos a una matriz, mientras especifica con precisión el índice de los elementos.

El siguiente ejemplo utiliza el método splice() para agregar dos elementos, comenzando en el índice 2 (es decir, el tercer elemento):

var fruitArray = ["manzana", "melocotón", "naranja", "limón", "lima", "cereza"]; fruitArray.splice(2, 0, "melón", "plátano"); console.log(frutaArray); // Salidas ["manzana", "melocotón", "melón", "plátano", "naranja", "limón", "lima", "cereza"]

El primer parámetro del método splice() es el índice. Indica en qué posición se deben agregar/eliminar elementos. En nuestro ejemplo, elegimos el índice 2 (con el valor "naranja").

El segundo parámetro es la cantidad de elementos que deben eliminarse. Especificamos un valor de 0, por lo que no se eliminará nada.

Los siguientes parámetros son opcionales. Agregan nuevos valores a la matriz. En nuestro caso, necesitamos agregar “melón” y “plátano”, comenzando por el índice 2.

En este artículo veremos una matriz de JavaScript y sus componentes. JavaScript está idealmente diseñado para la programación. De hecho, implementa el lenguaje ECMAScript (estándar ECMA-262).

¿Dónde se utiliza JavaScript? Se utiliza como lenguaje integrado para definir la ruta de un programa a un tema de aplicación. Se puede encontrar en navegadores donde se utiliza como lenguaje de programación que hace que las páginas web sean interactivas.

Las características arquitectónicas más importantes de este producto son la escritura dinámica y débil, la gestión automática de la memoria, la programación perfecta y las funciones de objetos de primera clase.

En general, JavaScript fue influenciado por varias razones, porque durante el desarrollo querían crear un lenguaje similar a Java, pero fácil de usar para los programadores. Por cierto, el lenguaje JavaScript no es propiedad de ninguna empresa u organización, lo que lo diferencia de varios estilos de programación utilizados por los desarrolladores web.

Cabe señalar que JavaScript es una marca registrada de Oracle Corporation.

¿Qué es una matriz?

Una matriz es aquella que almacena valores numerados. Cada uno de estos valores se denomina componente de matriz y el dígito al que está asociado el componente se denomina índice. La matriz de JavaScript no está escrita. Esto significa que las partes de una matriz pueden ser de cualquier tipo, y diferentes partes que pertenecen a la misma matriz tienen tipos completamente diferentes.

Además, la matriz de JavaScript es dinámica, lo que significa que no es necesario declarar un tamaño fijo. Después de todo, puedes agregar nuevos detalles en cualquier momento.

producción de matrices

Usando JavaScript, crear una matriz no es nada difícil. Hay dos métodos para esto. El primero implica crear una matriz usando un literal: corchetes, dentro de los cuales hay una lista de partes, separadas por comas.

  • var vacío =; //matriz vacía;
  • números var = ; //matriz con cinco componentes digitales;
  • diferencia var = ; //matriz con tres elementos de diferentes tipos.

Normalmente, no es necesario que los valores aquí sean simples (cadenas y números). También puede ser cualquier otra expresión, por ejemplo, literales de sujeto, otras funciones y matrices.

La segunda forma de crear una matriz es llamar al diseñador Array(). Puedes invitarlo de tres maneras:

  • Llamar al diseñador sin argumentos: var b - new Array(). Esto prevé la creación de una matriz vacía, equivalente a un literal vacío.
  • El constructor especifica explícitamente el valor de los n componentes de la matriz: var b = new Array (1, 3, 5, 8, “cadena”, verdadero). En este caso, al diseñador se le presenta una lista de argumentos que se convierten en componentes de una nueva matriz. Los argumentos se escriben en la matriz en la ubicación en la que se especifican.
  • Definición del área para posterior asignación de valores. Esto se hace especificando, al identificar una matriz, un único número entre paréntesis: var b = new Array(5). Este método de identificación implica asignar la cantidad requerida de componentes a la matriz (cada uno de los cuales figura como indefinido) con la posibilidad de asignar valores posteriormente durante el proceso de presentación. Este formulario se utiliza normalmente para preasignar una matriz de Javascript cuya longitud se conoce de antemano.
Escribir, leer y agregar detalles de matriz

Puede acceder a los componentes de una matriz utilizando el operador. Por cierto, todos los componentes de JavaScript, empezando desde cero, están numerados. Para obtener el elemento requerido, su número se indica en Como regla general, los detalles se pueden cambiar. Y para agregar JavaScript a la matriz, solo necesita asignar un nuevo valor.

Cabe señalar que las matrices de JavaScript pueden almacenar cualquier cantidad de elementos de cualquier tipo.

longitud de la matriz

Entonces, sabemos que la longitud de una matriz es generalmente un fenómeno interesante. Echemos un vistazo más de cerca. Todas las matrices, ya sea construidas utilizando el diseñador Array() o reveladas a través de un literal de matriz, tienen una propiedad de longitud específica que indica el número total de elementos almacenados. Dado que una matriz puede contener partes indefinidas (denotadas por indefinidas), una expresión más precisa es: la calidad de la longitud es siempre una unidad mayor que el número más grande (índice) del componente de la matriz. La calidad de la longitud se ajusta automáticamente y permanece precisa cuando aparecen nuevas piezas en la matriz.

Para que aparezca el componente final de la matriz, puede utilizar la propiedad de longitud.

La última parte tiene un índice uno menor que el tamaño de la matriz. Al fin y al cabo, la cuenta atrás siempre empieza desde cero. ¡Oh, este JavaScript! La longitud de la matriz depende del número exacto de elementos. Entonces, si no sabe cuántos debería haber, pero necesita acceder al elemento final de la matriz, debe usar la notación: v.length - 1.

Iterando sobre los detalles de la matriz

Muy a menudo, la propiedad de longitud se utiliza para iterar sobre los detalles de una matriz en un bucle:

  • var frutas = [“fresa”, “melocotón”, “manzana”, “plátano”];
  • para(var I = 0; yo< fruits.lenght; i++);
  • document.write(frutas[i] + "...").

En este ejemplo, los componentes parecen estar colocados de forma continua y comienzan con la primera parte con un índice de cero. Si este no es el caso, antes de llamar a cada elemento de la matriz, debe verificar si está definido.

A veces también se utiliza un bucle para inicializar componentes.

Hacer crecer y truncar una matriz

Me pregunto cómo agregar una cadena a una matriz usando JavaScript. A medida que trabajamos con matrices, la longitud de la calidad mejora automáticamente, por lo que tenemos que ocuparnos de ello nosotros mismos. Es necesario recordar un detalle: la propiedad de longitud no sólo es legible, sino también escribible. Si a la calidad de longitud se le asigna un valor que es más pequeño que el actual, entonces la matriz se reduce al tamaño especificado. Cualquier componente que no esté en el nuevo rango de índice se descarta y sus valores se pierden, incluso si luego se devuelve la longitud; los valores no se restauran.

Es bastante fácil borrar la matriz de esta manera: foo.length = 0.

Si la calidad de la longitud es mayor que su valor actual, aparecerán nuevas partes no identificadas al final de la matriz, lo que la aumentará al tamaño deseado.

Quitar partes del patrón

El operador de eliminación especifica un valor indefinido en un componente de matriz, pero sigue existiendo. Si necesita eliminar un elemento de una matriz de JavaScript para que las partes restantes se muevan al espacio libre, debe utilizar uno de los métodos de matriz proporcionados. Array.shift() elimina el primer componente, pop() elimina el componente final y splice() elimina uno o varios componentes en cualquier parte de la matriz.

matrices multidimensionales

Parece que lo hemos descubierto un poco. Las matrices bidimensionales son lo que debemos considerar a continuación. ¿Recuerdas que las matrices de JavaScript pueden contener otros elementos como componentes? Esta característica se utiliza para producir matrices multidimensionales. Para visitar componentes en una serie de matrices, simplemente use corchetes dos veces.

Matrices asociativas

Ahora exploremos cómo la marca JavaScript utiliza matrices asociativas. Para hacer esto, necesitamos profundizar en la teoría: las matrices asociativas a veces se denominan tablas hash. Gracias a ellos, se utilizan cadenas en lugar de índices. El uso de tales construcciones recuerda al uso del nombre de propiedad de un objeto simple, pero en esta versión cuando se trabaja en formato de matriz. Dado que JavaScript carece de formas de operar con matrices asociativas, se utilizan con mucha menos frecuencia que las normales. Cabe señalar que aún pueden resultar útiles para almacenar datos y facilitar el recuerdo de los detalles a los que es necesario acceder.

salida de matriz

¿Qué vamos a aprender sobre JavaScript ahora? Mostrar la matriz en un cuadro de diálogo (en la pantalla del monitor), así como mostrar los valores de los componentes de la matriz.

Si necesita mostrar los valores de todos los componentes de un programa, entonces es conveniente utilizar la declaración for. Curiosamente, la variable contador de reglas se utiliza como índice de un componente de matriz.

Limpieza

Para filtrar una matriz de JavaScript, debe restablecer su longitud a cero:

  • var miArray = ;
  • miArray.longitud = 0.
  • claro: función() (;
  • esta.longitud = 0;
  • devolver esto;
Agregar y quitar componentes

Bueno, sigamos estudiando este interesante lenguaje JavaScript. Un elemento de matriz se puede eliminar o agregar de la misma manera que las propiedades normales de otros objetos. Pero existen algunas diferencias: agregar propiedades numéricas puede cambiar la calidad de la longitud y modificar la propiedad de longitud puede eliminar las cualidades numéricas. En principio, el algoritmo para establecer cualidades de matrices es el siguiente:

  • Al agregar una propiedad digital desconocida i, si la longitud es igual o menor que i, la longitud se define como i+1.
  • Cuando cambia la calidad de la longitud, se realizan las siguientes acciones: si el valor asignado es menor que cero, se genera un RangeError. Se eliminan todas las calidades e índices numéricos que sean iguales a la nueva longitud y que sean mayores.

En general, eliminar un elemento de una matriz de JavaScript no es difícil. Después de todo, incluso al configurar la longitud, es necesario eliminar los componentes "extra". Esto lleva a la opción de borrar la matriz. Si la variable asignada de una nueva matriz vacía no es adecuada por algún motivo y es necesario restablecer la actual, basta con asignar el valor cero a su calidad de longitud.

métodos unshift, shift, pop y push

Aunque los componentes de la matriz se modifican manualmente, muchas personas recomiendan utilizar métodos integrados para ello. Es este matiz el que garantiza el valor de calidad de longitud correcto y la ausencia de espacios en la matriz. Por cierto, la calidad de la longitud correcta corresponderá al número de componentes.

El método push mueve las partes pasadas al final de la matriz. El método pop devuelve el componente final y lo elimina.

En general, en Internet Explorer anterior a la octava versión, unshift puede devolver un valor indefinido, en otros navegadores, un nuevo valor de longitud. Por lo tanto, es mejor no confiar en el valor devuelto por unshift.

Agregar y eliminar partes en medio de una matriz

Si necesito eliminar una matriz de JavaScript, ¿qué debo hacer? Se sabe que el método de empalme tiene la firma Array.prototype.splice.

Elimina los componentes deleteCount de la matriz, comenzando con el indicador de inicio. Si se pasan más de dos argumentos, se colocan todos los argumentos subsiguientes en la matriz en lugar de los eliminados. Si el inicio es negativo, entonces el índice a partir del cual se reanudará el retiro será igual a duración + inicio. La matriz se devuelve a partir de los elementos eliminados.

De hecho, al utilizar el método de empalme, puede eliminar componentes del medio de la matriz o agregar cualquier cantidad de componentes en cualquier parte de la matriz.

En la versión más simple, si necesita eliminar un componente con índice i, debe solicitar el método de empalme de la matriz con los parámetros i y 1.

En principio, el segundo parámetro del método de empalme es opcional, pero el comportamiento de una función con un argumento es diferente en cada navegador.

Por ejemplo, en Firefox, en las últimas versiones de Opera, en Safari y en Chrome, se eliminarán todos los detalles hasta el final de la matriz.

Ningún componente será eliminado en IE. En las primeras variaciones de Opera, es imposible predecir el comportamiento: se eliminará una parte con inicio de índice - 1. Por lo tanto, siempre es necesario pasar al menos dos componentes a este método.

Llaves

Por supuesto, al aprender JavaScript, también se deben tener en cuenta las matrices asociativas, como se mencionó anteriormente. Este es un tipo abstracto de información (una interfaz para un almacenamiento de datos), que le permite guardar pares de la forma "(clave, valor)" y admitir las operaciones de agregar un par, así como eliminar y buscar un par. por clave:

ENCONTRAR (tecla).

INSERTAR (valor, clave).

QUITAR (tecla).

Se supone que dos pares con claves similares no se pueden almacenar en una matriz asociativa. En un par k + v, v se denomina valor asociado con la clave k. La semántica y los nombres de las operaciones anteriores pueden ser diferentes en diferentes implementaciones de dichas matrices.

Por lo tanto, la acción ENCONTRAR (clave) devuelve el valor asociado con la clave dada, o algún objeto UNDEF específico que indica que no hay ningún valor asociado con la clave dada. Las otras dos acciones no devuelven nada (excepto si la operación fue exitosa).

En general, desde el punto de vista de la interfaz, es conveniente considerar una matriz asociativa como una matriz simple en la que no solo se pueden usar números enteros, sino también valores de otros tipos, por ejemplo, cadenas, como índices.

Por cierto, la compatibilidad con este tipo de matrices está disponible en muchos lenguajes de programación de alto nivel, como PHP, Perl, Ruby, Python, Tcl, JavaScript y otros. Para los lenguajes que no tienen herramientas integradas para trabajar con matrices asociativas, se ha creado una cantidad colosal de implementaciones en forma de bibliotecas.

Un ejemplo de matriz asociativa es una guía telefónica. En esta versión, el significado es el complejo “F. I. O. + dirección”, y la clave es el número de teléfono. Un número de teléfono tiene un propietario, pero una persona puede poseer varios números.

Extensiones asociativas

Cabe señalar que entre las extensiones más famosas se incluyen las siguientes:

  • CADA UNO: “revisa” todos los pares guardados.
  • BORRAR: elimina todos los registros.
  • MIN: busque el par con el valor clave más pequeño.
  • MAX: busque el par con el valor clave más grande.

Las dos últimas opciones requieren que la acción de comparación esté indicada en las teclas.

Implementaciones de matrices asociativas.

Hay muchas implementaciones diferentes de una matriz asociativa. La implementación más común podría basarse en una matriz simple cuyos componentes son pares (valor, clave). Para acelerar las operaciones de búsqueda, puede ordenar los componentes de una matriz determinada por clave y realizar la búsqueda usando Pero esto aumentará el período de tiempo requerido para agregar un nuevo par, ya que será necesario “separar” los componentes de la matriz para empaquetar un registro nuevo en la celda vacía que aparece.

Las implementaciones más conocidas son las basadas en varios árboles de búsqueda. Por ejemplo, en un lector STL de C++ típico, el contenedor de mapas se implementa en base a un árbol de caoba negra. Los estilos Ruby, Tcl y Python utilizan un tipo de tabla hash. Hay otras implementaciones.

En general, cada implementación tiene sus propias desventajas y ventajas. Es importante que las tres acciones se realicen tanto en promedio como en el peor matiz durante el período O(log n), donde n es el número actual de pares que se guardan. Para árboles de búsqueda coincidentes (incluidos árboles negro-rojo), se cumple esta condición.

Se sabe que las implementaciones basadas en tablas hash tienen un tiempo promedio de O(1), que es mejor que las implementaciones basadas en árboles de búsqueda. Por supuesto, esto no garantiza la ejecución de alta velocidad de operaciones individuales: el tiempo de INSERT en el peor de los casos se denota como O(n). El proceso INSERT se ejecuta durante un tiempo prolongado cuando el factor de llenado alcanza su punto más alto y es necesario reconstruir el índice de la tabla hash.

Por cierto, estas listas hash son malas porque, a partir de ellas, es imposible realizar acciones adicionales rápidas MAX, MIN y un algoritmo para recorrer todos los pares guardados en orden descendente o ascendente de claves.




Arriba