Las preguntas de la entrevista que a menudo aparecen en la prueba escrita. Las matrices en JavaScript son algo diferentes de las de otros idiomas. Para facilitar el aprendizaje de los métodos de matriz, el editor ha compilado los métodos de operación para matrices para usted a continuación. Echemos un vistazo.
Creación de matriz
Hay dos formas de crear matrices en JavaScript. El primero es usar el constructor de matriz:
var arr1 = new Array (); // crear una matriz vacía var arr2 = nueva matriz (20); // crear una matriz con 20 elementos var arr3 = new Array ("lirio", "lucy", "tom"); // crear una matriz con 3 cuerdasLa segunda forma básica de crear una matriz es usar la notación literal de matriz:
var arr4 = []; // crear una matriz vacía var arr5 = [20]; // crear una matriz que contenga 1 elemento var arr6 = ["lirio", "lucy", "tom"]; // Crear una matriz que contenga 3 cuerdas
Al leer y establecer los valores de una matriz, use entre corchetes y proporcione un índice numérico basado en 0 del valor correspondiente:
var arr6 = ["lirio", "lucy", "tom"]; // crear una alerta de matriz (arr6 [0]); // lilyarr6 [1] = "Mary"; // Modificar el segundo elemento a Maryarr6 [3] = "Sean"; // Agregue el cuarto elemento a Sean
La propiedad de longitud de una matriz en JavaScript se puede modificar, consulte el siguiente ejemplo:
var arr = ["lirio", "lucy", "tom"]; // crear una matriz que contenga 3 cadenas arr [arr.length] = "sean"; // Agregue un "Sean" arr.length = arr.length-1 en el subíndice de 3 (es decir, el final de la matriz).
Si necesita determinar si un objeto es un objeto de matriz, antes de ECMAScript 5, podemos usar InstanceOf Array para juzgar, pero el problema con la instancia del operador es que supone que solo hay un entorno de ejecución global. Si la página web contiene múltiples marcos, en realidad hay más de dos entornos de ejecución globales diferentes, por lo tanto, hay más de dos versiones diferentes del constructor de matriz. Si pasa una matriz de un marco a otro, la matriz aprobada tiene diferentes constructores de la matriz creada de forma nativa en el segundo marco.
ECMAScript 5 ha agregado el método Array.IsArray (). El propósito de este método es determinar si un valor es una matriz, independientemente de qué entorno de ejecución global se creó.
Método de matriz
Comencemos por introducir el método de matriz. Los métodos de matriz incluyen métodos y métodos prototipos de matriz heredados de objetos de objetos. Aquí solo presentaremos los métodos prototipo de matriz. Los métodos del prototipo de matriz incluyen principalmente lo siguiente:
unirse()
push () y pop ()
Shift () y Unchift ()
clasificar()
contrarrestar()
concat ()
rebanada()
empalme()
indexOf () y lastindexof () (recientemente agregado a ES5)
foreach () (recién agregado en ES5)
MAP () (recién agregado a ES5)
Filtro () (recién agregado a ES5)
Cada () (recién agregado a ES5)
algunos () (recién agregado a ES5)
Reducir () y Reduceright () (recién agregado a ES5)
Nuevo soporte de navegador para ES5:
Ópera 11+
Firefox 3.6+
Safari 5+
Chrome 8+
Internet Explorer 9+
Para las versiones del navegador compatible, se puede implementar a través de la extensión del prototipo de matriz. La siguiente es una introducción detallada a las funciones básicas de cada método.
1. Únete ()
Unir (separador): elementos de grupo de la matriz en una cadena, con separador como separador. Si se omite, use las comas como separador de forma predeterminada. Este método solo recibe un parámetro: es decir, separador.
var arr = [1,2,3]; console.log (arr.join ()); // 1,2,3console.log (arr.join ("-")); // 1-2-3console.log (arr); // [1, 2, 3] (la matriz original permanece sin cambios)El método Join () se puede usar para repetir la cadena. Simplemente pase en la cadena y el número de repeticiones para devolver la cadena repetida. La función es la siguiente:
function repetString (str, n) {return New Array (n + 1) .Join (str);} console.log (repetir ("ABC", 3)); // abcabcabcconsole.log (repiteString ("Hi", 5)); // hihihihihi2. Push () y pop ()
Push (): puede recibir cualquier número de parámetros, agregarlos uno por uno al final de la matriz y devolver la longitud de la matriz modificada.
Pop (): Retire el último elemento al final de la matriz, reduzca el valor de longitud de la matriz y luego devuelva el elemento eliminado.
var arr = ["lirio", "lucy", "tom"]; var count = arr.push ("jack", "sean"); console.log (count); // 5console.log (arr); // ["Lily", "Lucy", "Tom", "Jack", "Sean"] var item = arr.pop (); console.log (elemento); // sechonsole.log (arr); // ["Lily", "Lucy", "Tom", "Jack"]3. Shift () y Unchift ()
Shift (): elimine el primer elemento de la matriz original y devuelva el valor del elemento eliminado; Si la matriz está vacía, regrese indefinido.
Deshift: agregue el argumento al comienzo de la matriz original y devuelva la longitud de la matriz.
Este conjunto de métodos corresponde exactamente a los métodos push () y pop () anteriores. Uno es el comienzo de la matriz de operando y el otro es el final de la matriz de operando.
var arr = ["lirio", "lucy", "tom"]; var count = arr.unshift ("jack", "sean"); console.log (count); // 5console.log (arr); // ["Jack", "Sean", "Lily", "Lucy", "Tom"] var item = arr.hift (); console.log (item); // jackconsole.log (arr); // ["Sean", "Lily", "Lucy", "Tom"]4. Sort ()
Sort (): Organice los elementos de matriz en orden ascendente; es decir, el valor más pequeño está en la parte delantera y el valor más grande es en el último.
Al clasificar, el método Sort () llama al método de transformación ToString () para cada elemento de matriz, y luego compara la cadena resultante para determinar cómo clasificar. Incluso si cada elemento en la matriz es un valor numérico, el método sort () compara una cadena, por lo que ocurre la siguiente situación:
var arr1 = ["a", "d", "c", "b"]; console.log (arr1.sort ()); // ["A", "B", "C", "d"] arr2 = [13, 24, 51, 3]; console.log (arr2.sort ()); // [13, 24, 3, 51] (se cambia la meta matriz)
Para resolver el problema anterior, el método sort () puede recibir una función de comparación como parámetro para que especifiquemos qué valor está por delante de qué valor. La función de comparación recibe dos parámetros, devuelve un número negativo si el primer parámetro debe ser antes del segundo, devuelve 0 si los dos parámetros son iguales y devuelve un número positivo si el primer parámetro debe ser después del segundo. Aquí hay una función de comparación simple:
función compare (value1, value2) {if (value1 <value2) {return -1;} else if (value1> value2) {return 1;} else {return 0;}} arr2 = [13, 24, 51, 3]; console.log (arr2.sort (comparar)); // [3, 13, 24, 51]Si necesita generar resultados de clasificación descendente a través de la función de comparación, simplemente intercambie los valores devueltos por la función de comparación:
función compare (value1, value2) {if (value1 <value2) {return 1;} else if (value1> value2) {return -1;} else {return 0;}} arr2 = [13, 24, 51, 3]; console.log (arr2.sort (comparar)); // [51, 24, 13, 3]5. Reversa ()
Reverse (): Invierta el orden de los elementos de matriz.
var arr = [13, 24, 51, 3]; console.log (arr.reverse ()); // [3, 51, 24, 13] console.log (arr); // [3, 51, 24, 13] (cambio de matriz original)
6. Concat ()
Concat (): Agregue el argumento a la matriz original. Este método primero creará una copia de la matriz actual, luego agregará los parámetros recibidos al final de la copia y finalmente devolverá la matriz recién construida. Sin pasar parámetros al método concat (), simplemente copia la matriz actual y devuelve una copia.
var arr = [1,3,5,7]; var arreCopy = arr.concat (9, [11,13]); console.log (arcopy); // [1, 3, 5, 7, 9, 11, 13] console.log (arr); // [1, 3, 5, 7] (la matriz original no ha sido modificada)
De los resultados de la prueba anterior, podemos encontrar que: si lo que se pasa no es una matriz, entonces los parámetros se agregan directamente a la matriz. Si lo que se pasa es una matriz, entonces los elementos en la matriz se agregan a la matriz. Pero, ¿qué pasa si el que pasa es una matriz bidimensional?
var arreCopy2 = arr.concat ([9, [11,13]]); console.log (ArrCopy2); // [1, 3, 5, 7, 9, matriz [2]] console.log (arrcopy2 [5]); // [11, 13]
En el código anterior, el quinto elemento de la matriz ARRCOPY2 es una matriz que contiene dos elementos. Es decir, el método Concat solo puede agregar cada elemento que se pasa a la matriz a la matriz. Si algunos elementos que pasan a la matriz son matrices, este elemento de matriz también se agregará a ArRCopy2 como un elemento.
7. Slice ()
SLICE (): Devuelve una nueva matriz compuesta de elementos desde el subíndice de inicio especificado al subíndice final en la matriz original. El método SLICE () puede aceptar uno o dos parámetros, es decir, las posiciones de inicio y finalización del elemento se devolverán. En el caso de un solo parámetro, el método SLICE () devuelve todos los elementos que comienzan desde la posición especificada del parámetro hasta el final de la matriz actual. Si hay dos parámetros, el método devuelve el elemento entre las posiciones de inicio y finalización, pero no incluye el elemento en la posición final.
var arr = [1,3,5,7,9,11]; var arreCopy = arr.slice (1); var arreRCopy2 = arr.slice (1,4); var arreCopy3 = arr.slice (1, -2); var arreRCopy4 = arr.slice (-4, -1); console.log (arr); // [1, 3, 5, 7, 9, 11] (la matriz original no ha cambiado) console.log (Arrcopy); // [3, 5, 7, 9, 11] Console.log (Arrcopy2); // [3, 5, 7] console.log (Arrcopy3); // [3, 5, 7, 11] console.log (Arrcopy2); // [3, 5, 7] console.log (Arrcopy3); // [3, 5, 7] console.log (Arrcopy4); // [5, 7, 9]
Arrcopy solo establece un parámetro, es decir, el subíndice inicial es 1, por lo que la matriz devuelta es el subíndice 1 (incluido el subíndice 1) y comienza al final de la matriz.
ARRCOPY2 establece dos parámetros, devolviendo una subarray del subíndice Start (incluido 1) y el subíndice de inicio al final (excluyendo 4).
ArRCopy3 establece dos parámetros, termina el subíndice como un número negativo. Cuando ocurra un número negativo, agregue el número negativo al valor de la longitud de la matriz (6) para reemplazar el número en esa posición, por lo que es una subarray que comienza de 1 a 4 (excluyendo).
Ambos parámetros en ArRCopy4 son números negativos, por lo que se agregan a la longitud de la matriz 6 y se convierten a números positivos, por lo que son equivalentes a cortar (2,5).
8. Splice ()
Splice (): un método de matriz muy potente, tiene muchos usos, que pueden implementar la eliminación, la inserción y el reemplazo.
Eliminar: puede eliminar cualquier número de elementos, solo especificar 2 parámetros: la ubicación del primer elemento que se eliminará y el número de elementos a eliminar. Por ejemplo, el empalme (0,2) eliminará los dos primeros elementos en la matriz.
Insertar: puede insertar cualquier número de elementos en la posición especificada, solo proporcionar 3 parámetros: posición de inicio, 0 (número de elementos que se eliminarán) y los elementos a insertar. Por ejemplo, el empalme (2,0,4,6) insertará 4 y 6 de la posición 2 de la matriz actual.
Reemplazar: puede insertar cualquier cantidad de elementos en la posición especificada y eliminar cualquier número de elementos al mismo tiempo. Solo necesita especificar 3 parámetros: la posición inicial, el número de elementos que se eliminarán y cualquier número de elementos a insertar. El número de elementos insertados no tiene que ser igual al número de elementos eliminados. Por ejemplo, el empalme (2,1,4,6) elimina el elemento en la posición de la matriz actual 2, y luego inserta 4 y 6 de la posición 2.
El método Splice () siempre devuelve una matriz que contiene elementos eliminados de la matriz original, y si no se eliminan los elementos, se devuelve una matriz vacía.
var arr = [1,3,5,7,9,11]; var arrremoved = arr.splice (0,2); console.log (arr); // [5, 7, 9, 11] console.log (ArrRemoved); // [1, 3] var arrremoved2 = arr.splice (2,0,4,6); console.log (arr); // [5, 7, 4, 6, 9, 11] console.log (ArrRemoved2); // [] var arrremoved3 = arr.splice (1,1,2,4); console.log (arr); // [5, 2, 4, 4, 6, 9, 11] console.log (ArrRemoved3); // [7]
9. IndexOf () y LastIndexOf ()
indexOf (): recibe dos parámetros: el elemento que se encuentra y el índice (opcional) que indica la ubicación del punto de partida de búsqueda. Donde, mira hacia atrás desde el comienzo de la matriz (posición 0).
LastIndexof: recibe dos parámetros: el elemento que se encuentra y el índice (opcional) que indica la ubicación del punto de partida de búsqueda. Donde, comience a mirar hacia adelante desde el final de la matriz.
Ambos métodos devuelven la posición del elemento que se encuentra en la matriz, o devuelve 1 si no se encuentra. Al comparar el primer parámetro con cada elemento en la matriz, se utiliza el operador de convergencia.
var arr = [1,3,5,7,7,5,3,1]; console.log (arr.indexof (5)); //2console.log(arr.lastindexof(5)); //5console.log(arr.indexof(5,2)); //2console.log(arr.lastindexof(5,4)); //2console.log(arr.indexof("5 ")); //-110. Foreach ()
foreach (): atraviesa la matriz y ejecuta la función dada en cada elemento en la matriz. Este método no tiene valor de retorno. Los parámetros son todos los tipos de funciones, y hay parámetros pasados por defecto. Los parámetros son: el contenido de matriz atravesado; El índice de matriz correspondiente, la matriz en sí.
var arr = [1, 2, 3, 4, 5]; arr.forEach (function (x, index, a) {console.log (x + '|' + index + '|' + (a === arr));}); // la salida es: // 1 | 0 | verdadero // 2 | 1 | verdadero // 3 | 2 | verdad // 4 | 3 | verdadero // 5 | 4 | verdadero |11. Mapa ()
MAP (): se refiere a "mapa", que ejecuta una función dada en cada elemento en la matriz, y devuelve la matriz compuesta por el resultado de cada llamada de función.
El siguiente código utiliza el método de mapa para cuadrar cada número en la matriz.
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.map (function (item) {return item*item;}); console.log (arr2); // [1, 4, 9, 16, 25]12. Filtro ()
Filtro (): función de "filtro", cada elemento en la matriz ejecuta una función dada y devuelve una matriz que cumple con las condiciones de filtrado.
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var arr2 = arr.filter (función (x, índice) {índice de retorno % 3 === 0 || x> = 8;}); console.log (arr2); // [1, 4, 7, 8, 9, 10]13.Every ()
Cada (): determina si cada elemento en la matriz cumple con la condición. Solo cuando todos los artículos cumplan, la condición se devolverá verdadera.
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.every (function (x) {return x <10;}); console.log (arr2); // trueVar arr3 = arr.every (function (x) {return x <3;}); console.log (arr3); // FALSO14. Algunos ()
Algunos (): determina si hay elementos en la matriz que cumplen con las condiciones. Mientras uno de ellos cumpla con las condiciones, volverá verdadero.
var arrr = [1, 2, 3, 4, 5]; var arr2 = arr.m.eome (function (x) {return x <3;}); console.log (arr2); // trueVar arr3 = arr.some (function (x) {return x <1;}); console.log (arr3); // FALSO15. Reducir () y Reduceright ()
Ambos métodos implementan iterando sobre todos los elementos de la matriz y luego construyen un valor final devuelto. El método Rede () comienza desde el primer elemento de la matriz y lo revisa uno por uno hasta el final. Reduceright () comienza desde el último elemento de la matriz y atraviesa hacia el primer elemento.
Ambos métodos reciben dos parámetros: una función llamada en cada elemento y (opcional) como el valor inicial de la base de fusión.
La función pasada para reducir () y reducir () recibe 4 parámetros: el valor anterior, el valor actual, el índice del elemento y el objeto de matriz. Cualquier valor devuelto por esta función se pasará automáticamente al siguiente elemento como el primer parámetro. La primera iteración ocurre en el segundo término de la matriz, por lo que el primer parámetro es el primer término de la matriz, y el segundo parámetro es el segundo término de la matriz.
El siguiente código usa Reduce () para implementar la suma de la matriz, y el valor inicial de 10 se agrega a la matriz al principio.
valores var = [1,2,3,4,5]; var sum = valores.Reduceright (function (anterior, cur, index, array) {return prev + cur;}, 10); console.log (suma); // 25Lo anterior es una colección completa de métodos de matriz de JavaScript introducidos por el editor (recomendado). Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!