No JavaScript, as matrizes podem ser criadas usando o construtor da matriz, ou criado rapidamente usando [], que também é o método preferido. A matriz é um protótipo herdado do objeto e não possui um valor de retorno especial para o tipo de, ele retorna apenas 'objeto'.
1. MATRAY.PROTOTYP.SLICE Método
O método da fatia de uma matriz é geralmente usado para extrair fragmentos de uma matriz. No entanto, também tem a capacidade de converter "matrizes de classe" (como argumentos e htmlcollection) em matrizes reais.
A cópia do código é a seguinte:
var nodesarr = array.prototype.slice.call (document.forms);
var argSarr = array.prototype.slice.call (argumentos);
Fiquei curioso por que o método de matrizes da Slice tem essa habilidade e como é implementada no mecanismo JavaScript? O método fraterno de fatia tem essas habilidades?
Com curiosidade, faça o download do código -fonte do motor JavaScript do Google V8 para a área local. O endereço de download do código -fonte V8 é: https://github.com/v8/v8.
Encontre "Array.prototype.slice" em V8-MASTER/SRC/ARRAY.JS:
A cópia do código é a seguinte:
Função Arrayslice (Start, End) {
Check_object_coercible (isto, "Array.prototype.slice");
...
var resultado = []; // Esta frase é a chave
if (end_i <start_i) return resultado;
if (usaparsevariant (array, len, is_array (array), end_i - start_i)) {
...
Sparslice (Array, start_i, end_i - start_i, len, resultado);
} outro {
SimpleSlice (Array, start_i, end_i - start_i, len, resultado);
}
...
resultado de retorno;
Então, acho que o método Simpleslice que chama de "matriz de classe" deve ser usado e, em seguida, pesquise "Simpleslice" no código -fonte e descobriu que o método Simpleslice também é chamado no código -fonte de array.prototype.splice e a variável de resultado também é inicializada para uma matriz vazia. No entanto, se você deseja usar o método de emenda para converter a "matriz de classe" em uma matriz real, você deve passar o parâmetro de posição inicial para 0, ou seja:
A cópia do código é a seguinte:
var nodesarr = array.prototype.splice.call (document.forms, 0);
Porque seu princípio de implementação é formar uma nova matriz por itens excluídos da matriz. Se você estiver interessado, pode verificar a implementação do código -fonte do Array.prototype.splice.
Além disso, o Slice também pode clonar uma matriz:
A cópia do código é a seguinte:
var arr = [1, 2, 3];
var clonearr = arr.slice (); // clonearr: [1, 2, 3]
2. MATRAY.PROTOTYP.PUSH Método
Use o método push para mesclar matrizes:
A cópia do código é a seguinte:
var Arr1 = [1, 'str', {nome: 'Lang'}];
var Arr2 = [2, 'ing'];
Array.prototype.push.apply (ARR1, ARR2);
// Retornar resultado: [1, "str", {name: 'Lang'}, 2, "ing"]
3. MATRAY.PROTOTYP.SORT Método
Primeiro, envie o código:
A cópia do código é a seguinte:
var arr = ['1', '2', '10', '12'];
Arr.sort ();
// Resultado de retorno: ["1", "10", "12", "2"]
Os resultados acima geralmente não são o que queremos, então como classificamos por tamanho numérico:
A cópia do código é a seguinte:
Arr.sort (função (a, b) {
retornar a - b;
})
// Resultado de retorno: ["1", "2", "10", "12"]
Com a função do comparador de classificação, você pode personalizar muitos comparadores para obter classificação personalizada.
4. Atributo de comprimento
O atributo de comprimento de uma matriz não é somente leitura, o que significa que pode ser escrito. Por exemplo, use o atributo de comprimento para truncar a matriz:
A cópia do código é a seguinte:
var arr = [1, 2, 3, 4];
Arr.Length = 2;
// arr: [1, 2]
Arr.Length = 0;
// arr: []
Ao mesmo tempo, se o atributo de comprimento for aumentado, o valor do comprimento da matriz aumentará e indefinido será usado como um novo elemento para preencher.
A cópia do código é a seguinte:
var arr = [];
Arr.Length = 3;
// arr: [indefinido, indefinido, indefinido]
Ok, vamos terminar este dia. Já é de manhã cedo. Se você tiver novas descobertas no futuro, você o anexará aqui.
Antes, eu não tinha o hábito de escrever blogs, mas estava acostumado a colocar meu resumo habitual nas anotações de Youdaoyun. Eu não esperava que fosse preciso pensar em escrever minhas opiniões, porque eu tinha que considerar como expressá -lo para que outros pudessem entendê -lo melhor.
Se você tem alguma expressão ou entendimento errado, espero que todos possam ajudá -lo a me corrigir.
Também anexou alguns métodos de matriz JavaScript comumente usados
Concat () concatena duas ou mais matrizes e retorna o resultado.
junção () coloca todos os elementos da matriz em uma string. Os elementos são separados por delimitadores especificados.
pop () exclui e retorna o último elemento da matriz
push () adiciona um ou mais elementos ao final da matriz e retorna o novo comprimento.
reverse () reverse () reverte a ordem dos elementos na matriz.
Shift () exclui e retorna o primeiro elemento da matriz
Slice () retorna o elemento selecionado de uma matriz existente
Sort () classifica os elementos da matriz
Splice () exclui o elemento e adiciona novos elementos à matriz.
tosource () retorna o código -fonte do objeto
tostring () converte a matriz em uma string e retorna o resultado.
tolocalestring () converte a matriz em uma matriz local e retorna o resultado.
O DENLIFT () adiciona um ou mais elementos ao início da matriz e retorna um novo comprimento.
valueof () retorna o valor original do objeto de matriz