Métodos comuns de array em JavaScript - resumo

pesquisa rápida 

análise de método

1:concat();

Função: 合并数组, um ou mais arrays podem ser mesclados, e os dados após os arrays mesclados serão retornados, 不会改变原来的数组;

var str1 = [12,2,"hello"];var str2 = ["world"];
console.log(str1.concat(str2));        //[12, 2, "hello", "world"]
console.log(str1);                //[12,2,"hello"];

2:juntar();

Função: Converte um array em uma string e retorna os dados da string convertida sem alterar o array original;

Nota: Use aspas duplas em () para incluir o delimitador que deseja usar. O padrão é uma vírgula. É conveniente observar aqui. Eu usei -  

var str1 = [12,2,"hello"];
var str2 = ["world"];
console.log(str1.join("-"));        //12-2-hello
console.log(str1);              //[12, 2, "hello"]

3:pop();

função: 删除数组的最后一位, e返回删除的数据,会改变原来的数组

var str1 = [12,2,"hello"];
console.log(str1.pop()        //hello
console.log(str1);          //[12, 2]

4:shift();

Função: 删除数组的第一位数据, e 返回删除的数据,会改变原来的数组.

5:unshift();

função: na matriz 首位新增一个或多数据e返回新数组的长度,会改变原来的数组

Nota: unshift()Os dados retornados pelo método são o comprimento do novo array, e os dados que ele adiciona podem ser um ou mais, o que pode ser entendido como adicionar uma série de dados,

var str1 = [12,2,"hello"];
var str2 = [43,2,"test"];
console.log(str1.unshift("你好"));              //4
console.log(str2.unshift("hello","world"));        //5
console.log(str1);                       //["你好", 12, 2, "hello"]
console.log(str2);                       //["hello", "world", 43, 2, "test"]

6:empurrar();

Função: Adicione um ou mais dados ao último dígito do array e retorne o comprimento do novo array, o que mudará o array original

Nota: Os dados retornados pelo método push() são o comprimento do novo array, os dados que ele adiciona podem ser um ou mais, o que pode ser entendido como a adição de uma série de dados.

var str1 = [12,2,"hello"];
var str2 = [43,2,"test"];
console.log(str1.push("你好"));          //4
console.log(str2.push("hello","world"));    //5
console.log(str1);                 //[12, 2, "hello","你好"]
console.log(str2);                 //[43, 2, "test","hello", "world"]

7:reverso();

Função: vontade数组的数据进行反转,并且返回反转后的数组,会改变原数组

var str1 = [12,2,"hello"];
console.log(str1.reverse());      //["hello", 2, 12]
console.log(str1);            //["hello", 2, 12]

8:sort();

Função: Classificar os dados no array (o padrão é ordem crescente) e retornar o novo array classificado, que mudará o array original

Perceber:

  • 8.1: A ordenação aqui é 针对字符的排序usar o toString()método array para convertê-lo em uma string primeiro, e depois comparar bit a bit, 3 é maior que 12, pois o primeiro bit , 3>1não confunda com Numbero tipo data sorting
  • 8.2: str2Três caracteres são adicionados ao array. Você pode ver que, ao comparar, zoomé o maior, porque a primeira letra do inglês ASCIIpode ser convertida no valor correspondente através do código e depois comparar de acordo com o valor
var str1 = [12,2,43,5,2,5];
var str2 = [92,2,43,"hello",'zoom',5,2,5];
console.log(str1.sort());//[12, 2, 2, 43, 5, 5]
console.log(str1);//[12, 2, 2, 43, 5, 5]
console.log(str2.sort());//[2, 2, 43, 5, 5, 92, "abc", "hello", "zoom"]
console.log(str2);//[2, 2, 43, 5, 5, 92, "abc", "hello", "zoom"]
  • 8.3: Classificando Problemas

Parâmetros: sort(callback) Se você precisar classificar por valor, precisará passar parâmetros. sort(callback), callbacké a função de retorno de chamada que deve receber dois parâmetros, comparar os dois parâmetros e retornar um número que descreve a ordem relativa dos dois valores (a-b). Seu valor de retorno é o seguinte:

Retorna um valor menor que 0 se a for menor que b.

Retorna 0 se a for igual a b.

Retorna um valor maior que 0 se a for maior que b.

var str3 = [92,2,43,5,2,5];     
console.log(str3.sort(fn));                 //[2, 2, 5, 5, 43, 92]
console.log(str3);                      //[2, 2, 5, 5, 43, 92]
function fn (a,b){
    return a-b;
 }

9: fatia();

Função: interceptar o array na posição especificada e retornar o array interceptado sem alterar o array original

parâmetro:slice(startIndex, endIndex)

Observação: os elementos selecionados podem ser retornados de uma matriz existente. Este método aceita dois parâmetros slice(start,end), stsrtque são obrigatórios, indicando a posição inicial; endopcionais, indicando a posição final (não incluindo a posição final), e omitindo-o significa a última posição; tanto o início quanto o fim podem ser números negativos, quando o número é negativo, significa contar a partir do último dígito, como -1 significa o último dígito.

var arr = ["T1","J1","L1","L2","M1"];
    console.log(arr.slice(1,3));        //["J1","L1"]
    console.log(arr.slice(1));          //["J1","L1","L2","M1"]
    console.log(arr.slice(-4,-1));      //["J1","L1","L2"]
    console.log(arr.slice(-2));         //["Lily","M1"]
    console.log(arr.slice(1,-2));       //["J1","L1"]
    console.log(arr);                   //["T1","J1","L1","L2","M1"]

10:juntar();

Função: Adicione à matriz, exclua da matriz ou substitua os elementos na matriz e, em seguida, retorne o elemento excluído/substituído.

Parâmetros: splice(start,num,data1,data2,...); Todos os parâmetros são opcionais.

var arr = ["Tom","Jack","Lucy","Lily","May"];
console.log(arr.splice(2,0,"a","b"));//[]
console.log(arr);//["Tom", "Jack", "a", "b", "Lucy", "Lily", "May"]---原数组改变

11:toString();

Função: converter array em string, 类似于没有参数的join(). Este método será chamado automaticamente quando os dados sofrerem uma conversão de tipo implícita.Se for chamado manualmente, será convertido diretamente para uma string. não altera o array original

var str = [1,2,3];
console.log(str.toString()); //1,2,3
console.log(str);//[1,2,3]

12:valorDe();

Função: Retorna o valor original do array (em geral, na verdade é o próprio array), que normalmente é chamado pelo js em segundo plano e não aparece explicitamente no código

var str = [1,2,3];
console.log(str.valueOf()); //[1,2,3]
console.log(str); //[1,2,3]
//为了证明返回的是数组自身
console.log(str.valueOf() == str);//true

13:IndexOf();

Função: De acordo com os dados especificados, da esquerda para a direita, consulta a posição no array, se o dado especificado não existir, retorna -1, se o dado especificado for encontrado, retorna o índice dos dados

Parâmetros: indexOf(value, start); value é o dado a ser consultado; start é opcional, indicando a posição inicial da consulta. Quando start é negativo, conta a partir do final do array; se o valor não pode ser encontrado , então o método retorna -1

注意:如果找到该数据,立即返回该数据的索引,不再往后继续查找

var str = ["h","e","l","l","o"];
 console.log(str.indexOf("l"));        //2
 console.log(str.indexOf("l",3));      //3
 console.log(str.indexOf("l",4));      //-1
 console.log(str.indexOf("l",-1));     //-1
 console.log(str.indexOf("l",-3));     //2

14:últimoIndexOf();

Função: O método lastIndexOf() pode retornar a posição da última ocorrência de um valor de string especificado, se o segundo parâmetro start for especificado, então 在一个字符串中的指定位置从后向前搜索.

Parâmetros: lastIndexOf(value, start); value são os dados a serem consultados; start é um parâmetro inteiro opcional. Especifica a posição na string para iniciar a pesquisa. Seus valores válidos são de 0 a stringObject.length - 1. Se este parâmetro for omitido, a busca começará a partir do último caractere da string.

var str = ["h","e","l","l","o"];
console.log(str.lastIndexOf("l"));        //3
console.log(str.lastIndexOf("l",3));      //3
console.log(str.lastIndexOf("l",4));      //3
console.log(str.lastIndexOf("l",-1));     //3
console.log(str.lastIndexOf("l",-3));     //2
  • Nota: Este método 从后向前recupera a string, mas retorna a posição da última ocorrência da substring contando a partir da posição inicial (0). para ver se contém uma string. A pesquisa começa no início da string ou no final da string (quando o início não é especificado). 如果没有找到匹配字符串则返回 -1 。
  • Observação: o método lastIndexOf() diferencia maiúsculas de minúsculas!

15:paraCada();

Função: novo método ES5, usado para percorrer o array, sem valor de retorno,

Parâmetros: forEach(callback); callback tem três parâmetros por padrão, que são value (os dados do array percorrido), index (o índice correspondente) e self (o próprio array).

var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.forEach(function(value,index,self){
     console.log(value + "--" + index + "--" + (arr === self));
})
// 打印结果为:
// Tom--0--true
// Jack--1--true
// Lucy--2--true
// Lily--3--true
// May--4--true
console.log(a);     //undefined---forEach没有返回值
//该方法为遍历方法,不会修改原数组

16:mapa();

Função:

Igual à função forEach;

A função callback de map retornará o resultado da execução, e finalmente map retornará os valores de retorno de todas as funções callback em um novo array.

  • Parâmetros: map(callback);callback tem três parâmetros por padrão, respectivamente value,index,self. Igual ao parâmetro de forEach() acima
//功能1:同forEach
    var arr = ["Tom","Jack","Lucy","Lily","May"];
    var a = arr.map(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr === self))
    })
    // 打印结果为:
    // Tom--0--true
    // Jack--1--true
    // Lucy--2--true
    // Lily--3--true
    // May--4--true

    //功能2:每次回调函数的返回值被map组成新数组返回
    var arr = ["Tom","Jack","Lucy","Lily","May"];
    var a = arr.map(function(value,index,self){
        return "hi:"+value;
    })
    console.log(a);     //["hi:Tom", "hi:Jack", "hi:Lucy", "hi:Lily", "hi:May"]
    console.log(arr);   //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变

17:filtro();

Funções: 1. Igual à função forEach filter的回调函数需要返回布尔值,当为true时,将本次数组的数据返回给filter,最后filter将所有回调函数的返回值组成新数组返回(此功能可理解为“过滤”);

Parâmetros: filter(callback); callback tem três parâmetros por padrão, que são value, index e self.

//功能1:同forEach
    var arr = ["Tom","Jack","Lucy","Lily","May"];
    var a = arr.filter(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr === self))
    })
    // 打印结果为:
    // Tom--0--true
    // Jack--1--true
    // Lucy--2--true
    // Lily--3--true
    // May--4--true

    //功能2:当回调函数的返回值为true时,本次的数组值返回给filter,被filter组成新数组返回
    var arr = ["Tom","Jack","Lucy","Lily","May"];
    var a = arr.filter(function(value,index,self){
        return value.length > 3;
    })
    console.log(a);         //["Jack", "Lucy", "Lily"]
    console.log(arr);       //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变

18:cada();

Características: 判断数组中每一项是否都满足条件,只有所有项都满足条件,才会返回true.

Parâmetros: every() recebe uma função callback como parâmetro. Essa função callback precisa ter um valor de retorno, every(callback); callback tem três parâmetros por padrão, que são value, index e self.

Função 1: Quando o valor de retorno da função de retorno de chamada for verdadeiro, é semelhante à função de forEach, percorrendo todos; se for falso, pare a execução e os dados subsequentes não serão percorridos, 停在第一个返回false的位置.

//demo1:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.every(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr == self))
    })
    // 打印结果为:
    // Tom--0--true
    //因为回调函数中没有return true,默认返回undefined,等同于返回false

    //demo2:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.every(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr == self))
        return value.length < 4;
    })
    // 打印结果为:
    // Tom--0--true
    // abc--1--true
    // Jack--2--true
    //因为当遍历到Jack时,回调函数到return返回false,此时Jack已经遍历,但是后面数据就不再被遍历了

    //demo3:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.every(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr == self))
        return true;
    })
    // 打印结果为:
    // Tom--0--true
    // abc--1--true
    // Jack--2--true
    // Lucy--3--true
    // Lily--4--true
    // May--5--true
    //因为每个回调函数的返回值都是true,那么会遍历数组所有数据,等同于forEach功能

Função 2: Quando o valor de retorno de cada função de retorno de chamada é verdadeiro, o valor de retorno de cada é verdadeiro, desde que haja uma função de retorno de chamada com valor de retorno de falso, o valor de retorno de cada é falso

19:alguns();

Características: 判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true.

Parâmetros: some() recebe uma função callback como parâmetro. Essa função callback precisa ter um valor de retorno, some(callback); callback tem três parâmetros por padrão, que são value, index e self.

Função 1: Como é necessário julgar cada item do array, desde que haja uma função de retorno de chamada que retorne verdadeiro, alguns retornarão verdadeiro, portanto, é exatamente o oposto de cada. Quando uma função de retorno de chamada retorna verdadeiro, o resultado pode ser determinado, então pare a execução, os dados subseqüentes não serão mais percorridos, pare na primeira posição que retorna verdadeiro; quando o valor de retorno da função de retorno de chamada é falso, ele precisa continuar a executar para trás e o resultado só pode ser determinado no final, portanto, todos os dados serão percorridos para obter resultados semelhantes. Na função de forEach, percorra todos.

//demo1:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.some(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr == self))
        return value.length > 3;
    })
    // 打印结果为:
    // Tom--0--true
    // abc--1--true
    // Jack--2--true

    //demo2:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.some(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr == self))
        return true;
    })
    // 打印结果为:
    // Tom--0--true

    //demo3:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.some(function(value,index,self){
        console.log(value + "--" + index + "--" + (arr == self))
        return false;
    })
    // 打印结果为:
    // Tom--0--true
    // abc--1--true
    // Jack--2--true
    // Lucy--3--true
    // Lily--4--true
    // May--5--true

Função 2: Ao contrário de every, desde que haja uma função de retorno de chamada cujo valor de retorno seja verdadeiro, o valor de retorno de alguns é verdadeiro, o valor de retorno de todas as funções de retorno de chamada é falso e o valor de retorno de alguns é falso

//demo1:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.some(function(value,index,self){
        return value.length > 3;
    })
    console.log(a);             //true

    //demo2:
    var arr = ["Tom","abc","Jack","Lucy","Lily","May"];
    var a = arr.some(function(value,index,self){
        return value.length > 4;
    })
    console.log(a);             //false

20.reduzir();

Função: Comece do primeiro item do array, percorra até o final um por um, repita todos os itens do array e então 构建一个最终返回的值.

Parâmetros: reduce() recebe um ou dois parâmetros: o primeiro é uma função callback, indicando a função a ser chamada em cada item do array; o segundo parâmetro (opcional) é usado como valor inicial do merge, e é chamado pela função callback O primeiro parâmetro recebido em um tempo de execução. reduce(callback, initial); callback tem quatro parâmetros por padrão, ou seja, prev, now, index, self. Qualquer valor retornado pelo callback será usado como o primeiro parâmetro da próxima execução. Se o parâmetro inicial for omitido, então a primeira iteração ocorre no segundo item do array, então o primeiro parâmetro do callback é o primeiro item do array, e o segundo parâmetro é o segundo item do array.

//demo1:不省略initial参数,回调函数没有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self))
    }, 2019)
    // 打印结果为:
    // 2019--10--0--true
    // undefined--20--1--true
    // undefined--30--2--true
    // undefined--40--3--true
    // undefined--50--4--true
    // 此时回调函数没有return,所以从第二次开始,prev拿到的是undefined

    //demo2:省略initial参数,回调函数没有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self))
    })
    // 打印结果为:第一次,回调函数的第一个参数是数组的第一项。第二个参数就是数组的第二项
    // 10--20--1--true
    // undefined--30--2--true
    // undefined--40--3--true
    // undefined--50--4--true
    // 此时回调函数没有return,所以从第二次开始,prev拿到的是undefined

    //demo3:不省略initial参数,回调函数有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self));
        return "hello";
    }, 2019)
    // 打印结果为:
    // 2019--10--0--true
    // hello--20--1--true
    // hello--30--2--true
    // hello--40--3--true
    // hello--50--4--true
    // 此时回调函数有return,所以从第二次开始,prev拿到的是回调函数return的值

    //demo4:省略initial参数,回调函数有返回值
    var arr = [10,20,30,40,50];
    arr.reduce(function(prev,now,index,self){
        console.log(prev + "--" + now + "--" + index + "--" + (arr == self));
        return "hello";
    })
    // 打印结果为:第一次,回调函数的第一个参数是数组的第一项。第二个参数就是数组的第二项
    // 10--20--1--true
    // hello--30--2--true
    // hello--40--3--true
    // hello--50--4--true
    // 此时回调函数有return,所以从第二次开始,prev拿到的是回调函数return的值

    //demo5:使用reduce计算数组中所有数据的和
    var arr = [10,20,30,40,50];
    var sum = arr.reduce(function(prev,now,index,self){
        return prev + now;
    })
    console.log(sum);      //150
    // 回调函数的最后一次return的结果被返回到reduce方法的身上

    //demo6:使用reduce计算数组中所有数据的和
    var arr = [10,20,30,40,50];
    var sum = arr.reduce(function(prev,now,index,self){
        return prev + now;
    }, 8)
    console.log(sum);      //158
    // 回调函数的最后一次return的结果被返回到reduce方法的身上
    // 因为reduce有第二个参数initial,在第一次执行时被计算,所以最终结果被加上8

21.reduceRight()

Função: (Semelhante a reduzir) Desde 最后一项o início da matriz, avance um a um até a primeira posição, repita todos os itens da matriz e, em seguida, construa um valor final retornado.

Parâmetros: O mesmo que reduzir. demo: O mesmo que reduzir

Quais métodos de array mudarão o array original

unshift();

empurrar();

mudança();

pop();

organizar();

reverter();

emenda();

Esses sete métodos de array foram apresentados acima.Pode ser visto que, quando esses métodos forem usados ​​novamente, o array original será alterado.

Acho que você gosta

Origin blog.csdn.net/JackieDYH/article/details/124491492
Recomendado
Clasificación