En JavaScript, las matrices se pueden crear utilizando el constructor de matriz, o se crean rápidamente usando [], que también es el método preferido. La matriz es un prototipo heredado del objeto, y no tiene un valor de retorno especial para TypeOf, solo devuelve 'objeto'.
1. Array.prototype.slice Método
El método de corte de una matriz generalmente se usa para extraer fragmentos de una matriz. Sin embargo, también tiene la capacidad de convertir "matrices de clase" (como argumentos y htmlcollection) en matrices reales.
La copia del código es la siguiente:
var nodesarr = array.prototype.slice.call (document.forms);
var argsarr = array.prototype.slice.call (argumentos);
Tenía curiosidad por qué el método de matrices Slice tiene tal habilidad, y ¿cómo se implementa en el motor JavaScript? ¿El método fraternal de Slice tiene tales habilidades?
Con curiosidad, descargue el código fuente del motor JavaScript V8 de Google al área local. La dirección de descarga del código fuente V8 es: https://github.com/v8/v8.
Encuentre "array.prototype.slice" en V8-Master/Src/Array.js:
La copia del código es la siguiente:
function ArrayLice (Start, End) {
Check_object_coercible (this, "array.prototype.slice");
...
resultado var = []; // Esta oración es la clave
if (end_i <start_i) return resultado;
if (usaParseVariant (Array, Len, IS_Array (Array), End_i - Start_i)) {
...
SparsesLice (Array, Start_i, End_i - start_i, len, resultado);
} demás {
Simpleslice (array, start_i, end_i - start_i, len, resultado);
}
...
resultado de retorno;
Luego, supongo que se debe usar el método SimpleSlice que llama "matriz de clases", y luego busca "SimpleSlice" en el código fuente y descubrió que el método SimpleLice también se llama en el código fuente de Array.prototype.splice, y la variable de resultado también se inicializa a una matriz vacía. Sin embargo, si desea utilizar el método de empalme para convertir la "matriz de clases" en una matriz real, debe pasar el parámetro de posición inicial a 0, es decir:
La copia del código es la siguiente:
var nodesarr = array.prototype.splice.call (document.forms, 0);
Porque su principio de implementación es formar una nueva matriz mediante elementos de matriz eliminados. Si está interesado, puede verificar la implementación del código fuente de Array.prototype.splice.
Además, Slice también puede clonar una matriz:
La copia del código es la siguiente:
var arr = [1, 2, 3];
var clonearr = arr.slice (); // Clonearr: [1, 2, 3]
2. Array.prototype.push Método
Use el método de empuje para fusionar matrices:
La copia del código es la siguiente:
var arr1 = [1, 'str', {nombre: 'lang'}];
var arr2 = [2, 'ing'];
Array.prototype.push.apply (arr1, arr2);
// Resultado de retorno: [1, "str", {nombre: 'lang'}, 2, "ing"]]
3. Array.prototype.sort Método
Primero cargue el código:
La copia del código es la siguiente:
var arr = ['1', '2', '10', '12'];
arr.sort ();
// Resultado de retorno: ["1", "10", "12", "2"]
Los resultados anteriores generalmente no son lo que queremos, entonces, ¿cómo ordenamos por tamaño numérico:
La copia del código es la siguiente:
arr.sort (función (a, b) {
devolver a - b;
})
// Resultado de retorno: ["1", "2", "10", "12"]
Con la función del comparador de clasificación, puede personalizar muchos comparadores para lograr una clasificación personalizada.
4. Atributo de longitud
El atributo de longitud de una matriz no es de solo lectura, lo que significa que se puede escribir. Por ejemplo, use el atributo de longitud para truncar la matriz:
La copia del código es la siguiente:
var arr = [1, 2, 3, 4];
arr.length = 2;
// arr: [1, 2]
arr.length = 0;
// arr: []
Al mismo tiempo, si se incrementa el atributo de longitud, el valor de longitud de la matriz aumentará y indefinido se usa como un nuevo elemento para llenar.
La copia del código es la siguiente:
var arr = [];
arr.length = 3;
// arr: [indefinido, indefinido, indefinido]
Bien, terminemos este día. Ya es temprano en la mañana. Si tiene algún descubrimiento nuevo en el futuro, lo agregará aquí.
Antes, no tenía el hábito de escribir blogs, pero solo estaba acostumbrado a poner mi resumen habitual en las notas de Yodaoyun. No esperaba que se hubiera hecho un pensamiento para escribir mis puntos de vista, porque tenía que considerar cómo expresarlo para que otros pudieran entenderlo mejor.
Si tiene alguna expresión incorrecta o comprensión incorrecta, espero que todos puedan ayudarlo a corregirme.
También adjuntos algunos métodos de matriz de JavaScript comúnmente utilizados
concat () concatena dos o más matrices y devuelve el resultado.
unir () pone todos los elementos de la matriz en una cadena. Los elementos están separados por delimitadores especificados.
Pop () elimina y devuelve el último elemento de la matriz
Push () agrega uno o más elementos al final de la matriz y devuelve la nueva longitud.
inverso () reverse () invierte el orden de elementos en la matriz.
Shift () elimina y devuelve el primer elemento de la matriz
slice () Devuelve el elemento seleccionado de una matriz existente
sort () clasifica los elementos de la matriz
Splice () elimina el elemento y agrega nuevos elementos a la matriz.
toSource () Devuelve el código fuente del objeto
ToString () convierte la matriz en una cadena y devuelve el resultado.
TolocalEstring () convierte la matriz en una matriz local y devuelve el resultado.
Unshift () agrega uno o más elementos al comienzo de la matriz y devuelve una nueva longitud.
ValueOf () Devuelve el valor original del objeto de matriz