Perguntas da entrevista que geralmente aparecem no teste por escrito. Matrizes em JavaScript são um pouco diferentes daqueles em outros idiomas. Para facilitar o aprendizado de métodos de matriz, o editor compilou os métodos de operação para matrizes para você abaixo. Vamos dar uma olhada.
Criação de matriz
Existem duas maneiras de criar matrizes no JavaScript. O primeiro é usar o construtor da matriz:
var Arr1 = new Array (); // Crie uma matriz vazia var arr2 = nova matriz (20); // Crie uma matriz com 20 itens var Arr3 = nova matriz ("Lily", "Lucy", "Tom"); // Crie uma matriz com 3 stringsA segunda maneira básica de criar uma matriz é usar a notação literal da matriz:
var Arr4 = []; // Crie uma matriz vazia var arr5 = [20]; // Crie uma matriz contendo 1 item var Arr6 = ["Lily", "Lucy", "Tom"]; // Crie uma matriz contendo 3 strings
Ao ler e definir os valores de uma matriz, use suportes quadrados e forneça um índice numérico baseado em 0 do valor correspondente:
var Arr6 = ["Lily", "Lucy", "Tom"]; // Crie um alerta de matriz (arr6 [0]); // lilyarr6 [1] = "Mary"; // modifica o segundo item para Maryarr6 [3] = "Sean"; // Adicione o quarto item a Sean
A propriedade de comprimento de uma matriz em JavaScript pode ser modificada, consulte o exemplo a seguir:
var Arr = ["Lily", "Lucy", "Tom"]; // Crie uma matriz contendo 3 strings arr [arr.length] = "Sean"; // Adicione um "Sean" arr.length = arr.length-1 no subscrito de 3 (ou seja, o final da matriz).
Se você precisar determinar se um objeto é um objeto de matriz, antes do ECMAScript 5, podemos usar a instância do Array para julgar, mas o problema com a instância do operador é que ele assume que existe apenas um ambiente de execução global. Se a página da Web contiver várias estruturas, existem mais de dois ambientes diferentes de execução global, portanto, existem mais de duas versões diferentes do construtor de matriz. Se você passar uma matriz de uma estrutura para outra, a matriz passada possui construtores diferentes da matriz criada nativamente na segunda estrutura.
O ECMAScript 5 adicionou o método da matriz.isArray (). O objetivo deste método é determinar se um valor é uma matriz, independentemente de qual ambiente de execução global foi criado.
Método da matriz
Vamos começar introduzindo o método da matriz. Os métodos de matriz incluem métodos e métodos de protótipo de matriz herdados a partir de objetos de objetos. Aqui, apenas introduziremos os métodos de protótipo da matriz. Os métodos de protótipo da matriz incluem principalmente o seguinte:
juntar()
push () e pop ()
shift () e não dividido ()
organizar()
reverter()
concat ()
fatiar()
emenda ()
indexOf () e LastIndexOf () (recém -adicionado ao ES5)
foreach () (recém -adicionado no ES5)
map () (recém -adicionado ao ES5)
filtro () (recém -adicionado ao ES5)
Cada () (recém -adicionado ao ES5)
alguns () (recém -adicionados ao ES5)
Reduce () e ReduceRight () (recém -adicionado ao ES5)
Novo suporte do navegador para ES5:
Opera 11+
Firefox 3.6+
Safari 5+
Chrome 8+
Internet Explorer 9+
Para versões do navegador suportadas, ele pode ser implementado através da extensão do protótipo da matriz. A seguir, é apresentada uma introdução detalhada às funções básicas de cada método.
1. JONE ()
Junte -se (separador): elementos do grupo da matriz em uma corda, com separador como separador. Se omitido, use vírgulas como separador por padrão. Este método recebe apenas um parâmetro: ou seja, separador.
var arr = [1,2,3]; console.log (arr.join ()); // 1,2,3console.log (arr.join ("-")); // 1-2-3console.log (arr); // [1, 2, 3] (a matriz original permanece inalterada)O método junção () pode ser usado para repetir a string. Basta passar na string e o número de repetições para retornar a string repetida. A função é a seguinte:
Função RepeatString (str, n) {retorna nova matriz (n + 1) .Join (str);} console.log (repetição ("abc", 3)); // abcabcabcconsole.log (repetição ("hi", 5)); // hihihihihi2. Push () e pop ()
push (): você pode receber qualquer número de parâmetros, adicione um a um ao final da matriz e retornar o comprimento da matriz modificada.
pop (): remova o último item no final da matriz, reduza o valor do comprimento da matriz e retorne o item removido.
var arr = ["lily", "Lucy", "Tom"]; var count = arr.push ("jack", "Sean"); console.log (contagem); // 5console.log (arr); // ["Lily", "Lucy", "Tom", "Jack", "Sean"] var item = arr.pop (); console.log (item); // SeanConsole.log (arr); // ["Lily", "Lucy", "Tom", "Jack"]3. Shift () e Netfift ()
shift (): exclua o primeiro item da matriz original e retorne o valor do elemento excluído; Se a matriz estiver vazia, retorne indefinidos.
NETIFT: Adicione o argumento ao início da matriz original e retorne o comprimento da matriz.
Esse conjunto de métodos corresponde exatamente aos métodos push () e pop () acima. Um é o começo da matriz de operando e o outro é o fim da matriz de operando.
var arr = ["lily", "Lucy", "Tom"]; var count = arr.unshift ("jack", "Sean"); console.log (contagem); // 5console.log (arr); // ["Jack", "Sean", "Lily", "Lucy", "Tom"] var item = arr.shift (); console.log (item); // jackconsole.log (arr); // ["Sean", "Lily", "Lucy", "Tom"]4. Classificar ()
classy (): organize itens da matriz em ordem ascendente - ou seja, o menor valor está na frente e o maior valor é no final.
Ao classificar, o método Sort () chama o método de transformação ToString () para cada item da matriz e compara a sequência resultante para determinar como classificar. Mesmo que cada item da matriz seja um valor numérico, o método stor () compara uma string, então a seguinte situação ocorre:
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] (a matriz meta é alterada)
Para resolver o problema acima, o método Sort () pode receber uma função de comparação como um parâmetro para especificar qual valor está à frente de qual valor. A função de comparação recebe dois parâmetros, retorna um número negativo se o primeiro parâmetro deve ser antes do segundo, retornará 0 se os dois parâmetros forem iguais e retornará um número positivo se o primeiro parâmetro for após o segundo. Aqui está uma função de comparação simples:
função compare (value1, value2) {if (value1 <value2) {return -1;} else if (value1> value2) {return 1;} else {return 0;}} arr2 = [13, 24, 51, 3]; console.log (ar2.sort (compare)); // [3, 13, 24, 51]Se você precisar gerar resultados descendentes de classificação por meio da função de comparação, basta trocar os valores retornados pela função de comparação:
função compare (value1, value2) {if (value1 <value2) {return 1;} else if (value1> value2) {return -1;} else {return 0;}} arr2 = [13, 24, 51, 3]; console.log (ar2.sort (compare)); // [51, 24, 13, 3]5. reverso ()
reverse (): Inverta a ordem dos itens da matriz.
var arr = [13, 24, 51, 3]; console.log (arr.versever ()); // [3, 51, 24, 13] console.log (arr); // [3, 51, 24, 13] (mudança de matriz original)
6. Concat ()
concat (): adicione o argumento à matriz original. Este método primeiro criará uma cópia da matriz atual e depois adicionará os parâmetros recebidos ao final da cópia e, finalmente, retornará a matriz recém -construída. Sem passar os parâmetros para o método concat (), ele simplesmente copia a matriz atual e retorna uma cópia.
var Arr = [1,3,5,7]; var Arrcopy = arr.Concat (9, [11,13]); console.log (arcopy); // [1, 3, 5, 7, 9, 11, 13] console.log (arr); // [1, 3, 5, 7] (a matriz original não foi modificada)
Nos resultados do teste acima, podemos descobrir que: se o que é passado não for uma matriz, os parâmetros serão adicionados diretamente à matriz. Se o que é passado é uma matriz, os itens da matriz serão adicionados à matriz. Mas e se o passado for uma matriz bidimensional?
var Arrcopy2 = arr.Concat ([9, [11,13]]); console.log (Arcopy2); // [1, 3, 5, 7, 9, Array [2]] console.log (arcopy2 [5]); // [11, 13]
No código acima, o quinto item da matriz Arcopy2 é uma matriz que contém dois itens. Ou seja, o método Concat pode adicionar apenas cada item passado à matriz à matriz. Se alguns itens passados para a matriz forem matrizes, esse item de matriz também será adicionado ao Arrcopy2 como um item.
7. Slice ()
Slice (): Retorna uma nova matriz composta por itens do subscrito inicial especificado para o subscrito final na matriz original. O método slice () pode aceitar um ou dois parâmetros, ou seja, as posições de início e final do item a serem retornadas. No caso de apenas um parâmetro, o método slice () retorna todos os itens que começam da posição especificada do parâmetro até o final da matriz atual. Se houver dois parâmetros, o método retornará o item entre as posições de início e final - mas não incluirá o item na posição final.
var Arr = [1,3,5,7,9,11]; var Arrcopy = arr.slice (1); var Arrcopy2 = arr.slice (1,4); var Arrcopy3 = arr.slice (1, -2); var Arcopy4 = arr.slice (-4, -1); console.log (); // [1, 3, 5, 7, 9, 11] (a matriz original não mudou) console.log (arcopy); // [3, 5, 7, 9, 11] console.log (Arcopy2); // [3, 5, 7] console.log (arcopy3); // [3, 5, 7, 11] console.log (Arcopy2); // [3, 5, 7] console.log (arcopy3); // [3, 5, 7] console.log (arcopy4); // [5, 7, 9]
O ARRCOPY define apenas um parâmetro, ou seja, o subscrito inicial é 1, portanto a matriz retornada é o subscrito 1 (incluindo o subscrito 1) e começa no final da matriz.
O ARRCOPY2 define dois parâmetros, retornando um subarray do subscrito inicial (incluindo 1) e o início do subscrito final (excluindo 4).
O ARRCOPY3 define dois parâmetros, encerra o subscrito como um número negativo. Quando ocorrer um número negativo, adicione o número negativo ao valor do comprimento da matriz (6) para substituir o número nessa posição, para que seja um subarray a partir de 1 a 4 (excluindo).
Ambos os parâmetros no Arrcopy4 são números negativos, portanto são adicionados ao comprimento da matriz 6 e convertidos em números positivos, para que sejam equivalentes à fatia (2,5).
8. emenda ()
Splice (): Um método de matriz muito poderoso, possui muitos usos, que podem implementar exclusão, inserção e substituição.
Excluir: Você pode excluir qualquer número de itens, basta especificar 2 parâmetros: a localização do primeiro item a ser excluído e o número de itens a serem excluídos. Por exemplo, a Splice (0,2) excluirá os dois primeiros itens da matriz.
Inserir: Você pode inserir qualquer número de itens na posição especificada, basta fornecer 3 parâmetros: inicialização, 0 (número de itens a serem excluídos) e os itens a serem inseridos. Por exemplo, a emenda (2,0,4,6) inserirá 4 e 6 na posição 2 da matriz atual.
Substitua: Você pode inserir qualquer número de itens na posição especificada e excluir qualquer número de itens ao mesmo tempo. Você só precisa especificar 3 parâmetros: a posição inicial, o número de itens a serem excluídos e qualquer número de itens a serem inseridos. O número de itens inseridos não precisa ser igual ao número de itens excluídos. Por exemplo, a emenda (2,1,4,6) exclui o item na posição atual da matriz 2 e, em seguida, insere 4 e 6 na posição 2.
O método Splice () sempre retorna uma matriz que contém itens removidos da matriz original e, se nenhum itens for excluído, uma matriz vazia será retornada.
var Arr = [1,3,5,7,9,11]; var ArrRremoved = arr.splice (0,2); console.log (arr); // [5, 7, 9, 11] console.log (arremoved); // [1, 3] var ArrRremoved2 = arr.splice (2,0,4,6); console.log (arr); // [5, 7, 4, 6, 9, 11] Console.log (arrremoved2); // [] var ArrRremoved3 = arr.splice (1,1,2,4); console.log (arr); // [5, 2, 4, 4, 6, 9, 11] Console.log (arrremoved3); // [7]
9.
indexOf (): recebe dois parâmetros: o item a ser encontrado e (opcional) Índice indicando a localização do ponto de partida da pesquisa. Onde, olhe para trás desde o início da matriz (posição 0).
LastIndexOF: recebe dois parâmetros: o item a ser encontrado e (opcional) Índice indicando a localização do ponto de partida da pesquisa. Onde, comece ansioso pelo final da matriz.
Ambos os métodos retornam a posição do item a ser encontrada na matriz ou retornam 1 se não forem encontrados. Ao comparar o primeiro parâmetro com cada item da matriz, o operador de convergência é usado.
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 (): atravessa a matriz e executa a função fornecida em cada item da matriz. Este método não tem valor de retorno. Os parâmetros são todos os tipos de função e existem parâmetros passados por padrão. Os parâmetros são: o conteúdo da matriz atravessada; O índice de matriz correspondente, a própria matriz.
var arr = [1, 2, 3, 4, 5]; arr.foreach (função (x, index, a) {console.log (x + '|' + index + '|' + (a === arr));}); // a saída é: // 1 | 0 | true // 2 | 1 | 1 // 3 |11. Mapa ()
map (): refere -se a "mapa", que executa uma determinada função em cada item da matriz, e retorna a matriz composta pelo resultado de cada chamada de função.
O código a seguir usa o método do mapa para encaixar cada número na matriz.
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.map (function (item) {retornar item*item;}); console.log (arr2); // [1, 4, 9, 16, 25]12. filtro ()
FILTER (): Função "Filtro", cada item na matriz executa uma determinada função e retorna uma matriz que atende às condições de filtragem.
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var Arr2 = arr.Filter (função (x, índice) {retorno índice % 3 === 0 || x> = 8;}); console.log (ARR2); // [1, 4, 7, 8, 9, 10]13.avery ()
cada (): determina se cada item da matriz atende à condição. Somente quando todos os itens atenderem, a condição será verdadeira devolvida.
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); // false14. Alguns ()
alguns (): determina se existem itens na matriz que atendem às condições. Enquanto um deles atender às condições, ele retornará verdadeiro.
var arr = [1, 2, 3, 4, 5]; var arr2 = ar. Alguma (função (x) {return x <3;}); console.log (ARR2); // truevar ar3 = ar.some (function (x) {return x <1;}); console.log (ARR3); // false15. Reduce () e ReduceRight ()
Ambos os métodos implementam iterando em todos os itens da matriz e, em seguida, construindo um valor final retornado. O método reduz () começa a partir do primeiro item da matriz e passa por ele um a um até o final. ReduceRight () começa a partir do último item da matriz e atravessa o primeiro item.
Ambos os métodos recebem dois parâmetros: uma função chamada em cada item e (opcional) como o valor inicial da base de mesclagem.
A função foi aprovada para reduzir () e reduteright () recebe 4 parâmetros: o valor anterior, o valor atual, o índice do item e o objeto da matriz. Qualquer valor retornado por esta função será passado automaticamente para o próximo item como o primeiro parâmetro. A primeira iteração ocorre no segundo termo da matriz; portanto, o primeiro parâmetro é o primeiro termo da matriz e o segundo parâmetro é o segundo termo da matriz.
O código a seguir usa Reduce () para implementar a soma da matriz e o valor inicial de 10 é adicionado à matriz no início.
var valores = [1,2,3,4,5]; var sum = valores.Reduteright (function (prev, cur, índice, matriz) {return prept + cur;}, 10); console.log (soma); // 25O acima é uma coleção completa de métodos de matriz JavaScript introduzidos pelo editor (recomendado). Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!