1. IndexOf y LastIndexof Métodos:
Debido a que IE7 informará un error usando índice de un objeto de matriz, es necesario reescribir una compatibilidad.
La copia del código es la siguiente:
Array.prototype.lastindexof (item, index) {
var n = this.length, i = (index == null || índice> n-1)? n-1: index;
if (i <0) i = n+i;
para (; i> = 0; i--)
if (this [i] === item) // consolidar juicio, indexOf, dastIndexOf
regresar i;
regreso -1;
}
2. Método de choque: baraja la matriz.
La copia del código es la siguiente:
function shuffle (target) {
var i = target.length, j, temp;
for (; i> 0; j = parseInt (math.random () * i), x = target [-i], target [i] = target [j], target [j] = x) {}
// Suponiendo la longitud = 10, luego después de Math.random ()*10-> [0,10), ParseInt, [0,9], seleccione aleatoriamente uno e intercambie con el último elemento en la matriz. El segundo bucle, [0,8], intercambia con el penúltimo término de la matriz.
objetivo de retorno;
}
3. Flatten Process of Array: Flatten, devuelve una matriz unidimensional
La copia del código es la siguiente:
función Flatten (arr) {
resultado var = [];
arr.forEach (función (elemento) {
if (array.isArray (item)) resultado.concat (Flatten (item));
el más resultado.push (elemento);
});
resultado de retorno;
}
4. Método único: Operación de deduplicación de la matriz
Este método es que le gusta preguntar al entrevistador, porque tiene múltiples métodos de implementación, el más común es el dos para los bucles. Lo más común que sé es usar un objeto A y luego un ARR de matriz de bucle para ARR. Cada vez que existe (a [arr [i]]), y si no existe, se empujará a su resultado de la matriz recientemente definido. La existencia prueba, se repite, por lo que no hay necesidad de impulsar el resultado. Esta solución, para "123", 123, se considerará la misma. De hecho, uno es una cadena y la otra es un número, y no debe considerarse igual.
Entonces aparece el siguiente método: [1, "1", "1"]
La copia del código es la siguiente:
if ((typeof obj [array [i]])! = (typeof Array [i]) || obj [array [i]]! = Array [i]) {
a.push (matriz [i]);
obj [matriz [i]] = array [i];
}
// Determine primero si los tipos son los mismos. Si son iguales, determine si sus valores son iguales. Si no son iguales, serán guardados. Si son iguales, demostrarán que este valor ha existido antes.
Si los tipos son diferentes, hay dos situaciones aquí.
En el primer caso, OBJ ya ha guardado estos datos antes, por ejemplo: OBJ [123] = 123, ahora matriz [i] = "123". En este momento, TypeOf OBJ [Array [i]]) es un número, y la matriz de typeOf [i] es una cadena, por lo que se almacena en la matriz.
El segundo caso es que OBJ aún no ha guardado estos datos, por ejemplo: Array [i] = "123", OBJ ["123"] = Undefined. En este momento, TypeOf OBJ [Array [i]]) es typeOf Undefined = Undefined, que no es igual a la matriz de typing [i] y se almacena en la matriz.
Este método puede resolver la situación en la que las cadenas y los números son los mismos, pero no pueden resolver la situación donde los objetos son los mismos. Por ejemplo: a = {1: 2}, b = {2: 1};
Cuando el primer bucle, typeOf obj [a] = indefinido, typeOf a = object. Depositar obj [a] = a. De hecho, obj [objeto] = a;
En el segundo bucle, TypeOf OBJ [b] es igual a typyOf obj [object], que en realidad es typyOf a = objeto, typeOf b = object. Por lo tanto, entra obj [matriz [i]]! = Array [i] |, es decir, obj [b]-> obj [objeto]-> a! = b, así depositado
obj [b] = b; es decir, obj [objeto] = b; sobrescribe el OBJ anterior [objeto] = a;
En este caso, aparecerán todos los objetos, y solo se almacenará el último valor del objeto.
Al considerar los objetos, uso el siguiente método:
La copia del código es la siguiente:
para (var i = 0; i <temp.length; i ++) {
para (var j = i+1; j <temp.length; j ++) {
if (temp [i] === temp [j]) {
Temp.Splice (J, 1);
J--;
}
}
}
regresar temp;
5. Clasificación de matriz: método de clasificación. Si el objeto que desea clasificar es un objeto, puede escribir una comparación (a, b) {if (a.age> b.age) return 1; else return -1;}, a.sort (comparar).
6.Min Devuelve el valor mínimo de la matriz: return math.min.apply (0, matriz);
7. Deshift no devuelve la longitud de la matriz bajo IE6,7.
La copia del código es la siguiente:
if ([]. Unshift (1)! == 1) // Agregue un elemento de la anterior a una matriz vacía, otros navegadores devolverán 1, mientras que IE6 y 7 no devolverán la longitud de la matriz. Ejecutar la instrucción if
{
var _unshift = array.prototype.unshift; // FUNCIONES DESCRIPTO.
Array.prototype.unshift = function () {
_unshift.apply (esto, argumentos);
devolver esto.length;
}
}
8. El placa En el caso de un parámetro, el segundo parámetro predeterminado de IE8 y las siguientes versiones es 0, mientras que otros navegadores son longitud de matriz.
La copia del código es la siguiente:
if ([1,2,3] .splice (1) .length == 0) // ie8 y las siguientes versiones serán iguales a 0, y otras versiones serán igual a 3, ingrese si
{
var _splice = array.prototype.splice;
Array.prototype.splice = function (a) {
if (argumentos.length == 1) // Si solo hay un parámetro
{
return _splice.call (this, a, this.length);
}demás{
return _splice.apply (esto, argumentos);
}
}
}
Este método cambiará las opciones de la matriz, por lo que Push, Pop, Shift y Deshift de la matriz (estos métodos también modificarán las opciones de la matriz) llamará a este método para implementarlo.
Aquí hay un lugar para tener en cuenta:
La copia del código es la siguiente:
var color = nueva matriz ('rojo', 'azul', 'amarillo', 'negro');
var color2 = color.splice (2,0, 'marrón', 'rosa');
alerta (color); // Rojo, azul, marrón, rosa, amarillo, negro, en la opción amarilla, inicie la operación, si la eliminación es 0, la opción agregada se inserta antes del amarillo. Recordar.
Aquí, verifique la diferencia entre empalme y corte, valor de retorno y su impacto en la matriz original.
Lo anterior es una versión simplificada del contenido de esta sección. Aunque se simplifica, los puntos clave son todos. Espero que sea útil para todos al leer esta sección.