1. Métodos Indexof e LastIndexOf:
Como o IE7 relatará um erro usando o indexOF em um objeto de matriz, é necessário reescrever uma compatibilidade.
A cópia do código é a seguinte:
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 (este [i] === item) // julgamento consolidar, indexof, lastIndexOF
retornar i;
retornar -1;
}
2. Método da luta: embaralhe a matriz.
A cópia do código é a seguinte:
função shuffle (alvo) {
var i = Target.Length, J, Temp;
para (; i> 0; j = parseint (Math.random () * i), x = Target [-i], Target [i] = Target [J], Target [J] = X) {}
// assumindo o comprimento = 10, depois de math.random ()*10-> [0,10), parseint, [0,9], selecione aleatoriamente um e trocar-o com o último item na matriz. O segundo loop, [0,8], troca com o penúltimo termo da matriz.
alvo de retorno;
}
3. Processo de matriz achatada: achatar, devolver uma matriz unidimensional
A cópia do código é a seguinte:
função aclatten (arr) {
var resultado = [];
Arr.ForEach (função (item) {
if (Array.isArray (item)) result.Concat (Flatten (Item));
else Result.push (item);
});
resultado de retorno;
}
4. Método exclusivo: operação de desduplicação da matriz
Este método é o entrevistador que gosta de perguntar, porque possui vários métodos de implementação, o mais comum é o dois para loops. A coisa mais comum que eu sei é usar um objeto A e, em seguida, A for Loop Array Arr. Toda vez que (a [arr [i]]) existir, e se não existir, ele será empurrado para o resultado da matriz recém -definida. A existência prova, repete, portanto, não há necessidade de entrar no resultado. Esta solução, para "123", 123, será considerada a mesma. De fato, um é uma corda e o outro é um número e não deve ser considerado o mesmo.
Portanto, o método a seguir aparece: [1, "1", "1"]
A cópia do código é a seguinte:
if ((typeof obj [array [i]])!
a.push (matriz [i]);
obj [array [i]] = matriz [i];
}
// Primeiro, determine se os tipos são iguais. Se forem iguais, determine se seus valores são iguais. Se eles não forem iguais, serão salvos. Se forem iguais, provarão que esse valor já existia antes.
Se os tipos forem diferentes, existem duas situações aqui.
No primeiro caso, o OBJ já salvou esses dados antes, por exemplo: OBJ [123] = 123, agora matriz [i] = "123". Neste momento, o tipo de obj [Array [i]]) é um número, e o tipo de matriz [i] é uma string, por isso é armazenado na matriz.
O segundo caso é que o OBJ ainda não salvou esses dados, por exemplo: Array [i] = "123", obj ["123"] = indefinido. Neste momento, o tipo de obj [Array [i]]) é tipo de indefinição = indefinido, que não é igual a tipo de matriz [i] e é armazenado na matriz.
Esse método pode resolver a situação em que as cordas e números são iguais, mas não podem resolver a situação em que os objetos são iguais. Por exemplo: a = {1: 2}, b = {2: 1};
Quando o primeiro loop, typeof obj [a] = indefinido, tipo de a = objeto. Depósito obj [a] = a. De fato, obj [objeto] = a;
No segundo loop, o tipo de obj [b] é igual ao tipo de obj [objeto], que é realmente tipo de a = objeto, tipo de b = objeto. Portanto, ele entra em obj [array [i]]! = Array [i] |, isto é, obj [b]-> obj [objeto]-> a! = b, assim depositado
obj [b] = b; isto é, obj [objeto] = b; substitui o obj [objeto] anterior = a;
Nesse caso, todos os objetos aparecerão e apenas o último valor do objeto será salvo.
Ao considerar objetos, uso o seguinte método:
A cópia do código é a seguinte:
for (var i = 0; i <temp.length; i ++) {
for (var j = i+1; j <temp.length; j ++) {
if (temp [i] === temp [j]) {
temp.splice (j, 1);
J--;
}
}
}
retornar temp;
5. Classificação da matriz: Método de classificação. Se o objeto que você deseja classificar for um objeto, você pode escrever uma comparação (a, b) {if (a.age> b.age) retornar 1; else retornar -1;}, a.sort (compare).
6.Min Retorna o valor mínimo da matriz: return math.minmin.apply (0, matriz);
7. O desnatado não retorna o comprimento da matriz sob o IE6,7.
A cópia do código é a seguinte:
Se ([]. NETNIFT (1)! == 1) // Adicione um item do anterior a uma matriz vazia, outros navegadores retornarão 1, enquanto o IE6 e 7 não retornarão o comprimento da matriz. Executar a declaração IF
{
var _unShift = array.prototype.unshift; // seqüestro de função.
Array.prototype.unshift = function () {
_unShift.Apply (isto, argumentos);
retornar este.length;
}
}
8.Splice No caso de um parâmetro, o segundo parâmetro padrão do IE8 e as versões a seguir é 0, enquanto outros navegadores têm o comprimento da matriz.
A cópia do código é a seguinte:
Se ([1,2,3] .Splice (1) .Length == 0) // IE8 e as seguintes versões serão iguais a 0, e outras versões serão iguais a 3, digite se se
{
var _splice = array.prototype.splice;
Array.prototype.splice = function (a) {
if (argumentos.Length == 1) // se houver apenas um parâmetro
{
return _splice.call (this, a, this.length);
}outro{
return _splice.apply (isto, argumentos);
}
}
}
Esse método alterará as opções da matriz; portanto, empurre, pop, turno e desvio da matriz (esses métodos também modificarão as opções da matriz) chamarão esse método para implementá -lo.
Aqui está um lugar para observar:
A cópia do código é a seguinte:
var color = novo array ('vermelho', 'azul', 'amarelo', 'preto');
var color2 = color.splice (2,0, 'marrom', 'rosa');
alerta (cor); // vermelho, azul, marrom, rosa, amarelo, preto, na opção amarela, inicie a operação, se excluir 0, a opção adicionada será inserida antes de amarelo. Lembrar.
Aqui, verifique a diferença entre emenda e fatia, valor de retorno e seu impacto na matriz original.
O acima é uma versão simplificada do conteúdo desta seção. Embora esteja simplificado, os principais pontos são todos. Espero que seja útil para todos ao ler esta seção.