【JavaScript】——Método de matriz JS (completo y detallado)

1. Crea una matriz

1. Usa el método literal de matriz

var arr1 = [];     // 创建一个数组
var arr2 = [10];   // 创建一个数组长度为10的数组
var arr3 = ['a','b','c'];  // 创建一个包含3个字符串的数组

2. Usa el constructor de matrices

Sin construcción de parámetros

var arr1 = new Array();   // 创建一个空数组

Construir con parámetros

Si solo se pasa un parámetro numérico, significa crear una matriz vacía con la longitud inicial de la matriz especificada

var arr2 = new Array(10);     // 创建一个数组长度为10的数组

Si se pasa un parámetro no numérico o el parámetro es mayor que 1, significa crear una matriz que contiene los elementos especificados

var arr3 = new Array('a','b','c');     // 创建一个包含3个字符串的数组

3. El método Array.of crea una matriz (nuevo en es6)

El método Array.of() crea una matriz que contiene todos los parámetros entrantes, independientemente del número y tipo de parámetros

let arr1 = Array.of(1,2);
console.log(arr1.length);   // 2

let arr2 = Array.of(3);
console.log(arr2.length);   // 1
console.log(arr2[0]);   // 3

4. El método Array.from crea una matriz (nuevo en es6)

Convertir objetos que no son de matriz en matrices reales en js es muy engorroso. En es6, pase un objeto iterable o un objeto similar a una matriz como primer parámetro, y Array.from() puede devolver una matriz

function arga(...args){  // ...args剩余参数数组,由传递给函数的实际参数提供
     let arg = Array.from(args);
     console.log(arg);
}

arga(arr1,26,from);     // [arr1,26,from]

2. Método de matriz

1. El método de cambiar la matriz en sí

push , agregue un elemento al final de la matriz, se pueden agregar uno o más elementos y el valor devuelto es el valor de longitud modificado de la matriz

pop , elimina un elemento del final de la matriz, el valor devuelto es el elemento eliminado

var arr1 = ['lily','lucy','Tom'];
var count = arr1.push('Jack','Sean');
console.log(count);   // 5
console.log(arr1);   // ['lily','lucy','Tom','Jack','Sean']

var item = arr1.pop();
console.log(item);   // Sean
console.log(arr1);   // ['lily','lucy','Tom','Jack']

unshift , agrega uno o más elementos al encabezado de la matriz, el valor devuelto es el valor de longitud modificado del arreglo
shift , elimina el primer elemento del encabezado de la matriz y el valor devuelto es el elemento eliminado

var arr1 = ['lily','lucy','Tom'];
var count = arr1.unshift('Jack','Sean');
console.log(count);   // 5
console.log(arr1);   // ['Jack','Sean','lily','lucy','Tom']

var item = arr1.shift();
console.log(item);   // Jack
console.log(arr1);   // [''Sean','lily','lucy','Tom']

splice(index, num, item1, item2, …) , index especifica la posición del índice para comenzar a procesar, y num especifica cuántos elementos eliminar, a partir del tercer elemento es un elemento nuevo. Puede agregar, eliminar y reemplazar elementosdesde la posición de índice especificadaEl valor devuelto es una matriz de elementos eliminados.

//替换
var a=['a','b','c'];
var b=a.splice(1,1,'e','f');    //a=['a','e','f','c'],b=['b']

//删除
var arr1 = [1,3,5,7,9,11];
var arrRemoved = arr1.splice(0,2);
console.log(arr1);   // [5,7,9,11]
console.log(arrRemoved);   // [1,3]

// 添加元素
var arr1 = [22,3,31,12];
arr1.splice(1,0,12,35);
console.log(arr1);   // [22,12,35,3,31,12]

sort , ordena la matriz, en orden ascendente de forma predeterminada, puede pasar parámetros del tipo de función para determinar el método de clasificación

Se utiliza para ordenar los elementos de una matriz. El orden de clasificación puede ser alfanumérico y ascendente o descendente, el orden de clasificación predeterminado es alfabéticamente ascendente

var arr1 = ['a','d','c','b'];
console.log(arr1.sort());   // ['a','b','c','d']

function compare(value1,value2){
     if(value1 < value2){
          return -1;
     }else if(value1 > value2){
          return 1;
     }else{
          return 0;
     }
}

var arr2 = [13,24,51,3];
console.log(arr2.sort(compare));   // [3,13,24,51]

// 如果需要通过比较函数产生降序排序的结果,只要交后比较函数返回的值即可

invertir , invertir la matriz

var arr1 = [13,24,51,3];
console.log(arr1.reverse());   // [3,51,24,13]
console.log(arr1);   // [3,51,24,13](原数组改变)

El método reduce() acepta una función como acumulador, y cada valor de la matriz (de izquierda a derecha) se reduce inicialmente a un valor final.

var arr1 = [1,2,3,4,5];
var sum = arr1.reduce((prev,cur,index,array) => {
     return prev + cur;
},10);   // 数组一开始加了一个初始值10,可以不设默认0
console.log(sum);   // 25

2. El método de devolver una nueva matriz sin cambiar la propia matriz

concat , el parámetro de concat, puede ser un valor único/múltiple de tipos básicos o una matriz. Concatene la matriz y los parámetros originales, y devuelva la nueva matriz formada después del empalme.

var arr1 = [1,3,5,7];
var arrCopy = arr1.concat(9,[11,13]);
console.log(arrCopy);   // [1,3,5,7,9,11,13]
console.log(arr1);   // [1,3,5,7](原数组未被修改)

slice(startIndex, endIndex) , intercepte el fragmento de la matriz original, cierre el frente y abra el intervalo, comience a interceptar el elemento que contiene el índice startIndex, hasta el elemento anterior al índice endIndex

Intervalo de intercepción: [startIndex, endIndex)

var arr1 = [1,3,5,7,9,11];
var arrCopy = arr1.slice(1);
var arrCopy2 = arr1.slice(1,4);
var arrCopy3 = arr1.slice(1,-2);   // 相当于arr1.slice(1,4);
var arrCopy4 = arr1.slice(-4,-1);   // 相当于arr1.slice(2,5);
console.log(arr1);   // [1,3,5,7,9,11](原数组没变)
console.log(arrCopy);   // [3,5,7,9,11]
console.log(arrCopy2);   // [3,5,7]
console.log(arrCopy3);   // [3,5,7]
console.log(arrCopy4);   // [5,7,9]

//如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾
var a=[1,2,3,4,5,6];
var b=a.slice(0,3);    //[1,2,3]
var c=a.slice(3);       //[4,5,6]
 
//如果两个参数中的任何一个是负数,array.length会和它们相加,试图让它们成为非负数,举例说明:
//当只传入一个参数,且是负数时,length会与参数相加,然后再截取
var a=[1,2,3,4,5,6];
var b=a.slice(-1);    //[6]
 
//当只传入一个参数,是负数时,并且参数的绝对值大于数组length时,会截取整个数组
var a=[1,2,3,4,5,6];
var b=a.slice(-6);    //[1,2,3,4,5,6]
var c=a.slice(-8);    //[1,2,3,4,5,6]
 
//当传入两个参数一正一负时,length也会先于负数相加后,再截取
var a=[1,2,3,4,5,6];
var b=a.slice(2,-3);    //[3]
 
//当传入一个参数,大于length时,将返回一个空数组
var a=[1,2,3,4,5,6];
var b=a.slice(6);  //[]

3. Bucle a través de métodos relacionados

Estos métodos también pueden cambiar indirectamente los elementos de la matriz durante el ciclo.

forEach ((item, index) => {}) método, atraviesa cada elemento de la matriz, el parámetro es una función y los dos parámetros de la función de parámetro son el elemento de la matriz y el índice correspondiente

La función de devolución de llamada en el método forEach tiene tres parámetros:

El primer parámetro es el contenido de la matriz a recorrer ,

El segundo parámetro es el índice de matriz correspondiente ,

El tercer parámetro es la propia matriz.

var arr = [1,2,3,4];
var sum =0;
arr.forEach(function(value,index,array){

 array[index] == value; //结果为true

 sum+=value; 

 });

console.log(sum); //结果为 10

El método include() , recientemente agregado por es7, se usa para juzgar si una matriz o cadena contiene un valor específico, use el operador === para comparar valores, si devuelve verdadero, de lo contrario, falso, hay dos parámetros, el primero El primero es (obligatorio) el valor del elemento a buscar, y el segundo es (opcional) la posición en la que empezar a buscar el elemento.

var arr1 = [22,3,31,12,58];
var includes = arr1.includes(31);
console.log(includes);   // true

var includes2 = arr1.includes(31,3);   // 从索引3开始查找31是否存在
console.log(includes2);   // false

El método map((item, index) => {}) atraviesa cada elemento de la matriz. El parámetro es una función. Los dos parámetros de la función de parámetro son el elemento de la matriz y el índice correspondiente. De acuerdo con los resultados de ejecución de la función de parámetro, estos resultados son Formar una nueva matriz para devolver.

Los elementos se procesan secuencialmente en el orden de los elementos originales de la matriz.

let array = [1, 2, 3, 4, 5];

let newArray = array.map((item) => {
    return item * item;
})

console.log(newArray)  // [1, 4, 9, 16, 25]

El método filter((item, index) => {}) atraviesa cada elemento de la matriz, ejecuta la función de parámetro y deja aquellos elementos que cumplen las condiciones definidas en la función de parámetro para formar una nueva matriz y devolver

const array = [14, 17, 18, 32, 33, 16, 40];
const newArr = array.filter(num => num > 14)
console.log(newArr);//打印 [17,18,32,33,16,40]
 
// 查找某个值-------------------------
const array = [14, 17, 18, 32, 33, 16, 40];
const newArr = array.filter(num => num == 14)
console.log(newArr);//打印 [14]
 
//返回大于某个值和小于某个值的元素
const array = [14, 17, 18, 32, 33, 16, 40];
const newArr = array.filter(num => num > 14 && num < 33)
console.log(newArr);//打印 [17, 18, 32, 16]

buscar() y buscarÍndice()

Ambos aceptan dos parámetros: una función de devolución de llamada y un valor opcional que se usa para especificar esto dentro de la función de devolución de llamada.

La función de devolución de llamada puede aceptar 3 parámetros: un elemento de la matriz, la posición del índice correspondiente al elemento y la matriz en sí, y dejar de buscar cuando la función de devolución de llamada devuelve verdadero por primera vez.

La diferencia entre los dos es que el método find() devuelve el valor coincidente, mientras que el método findIndex() devuelve el índice de la posición coincidente.
 

let arr = [1,2,3,4,5];
let num = arr.find(item => item > 1);
console.log(num) // 2

let arr = [1,2,3,4,5];
let num = arr.findIndex(item => item > 1);
console.log(num) // 1

entradas () 、 teclas () 和 valores ()

ES6 agrega entradas (), claves () y valores () - para atravesar matrices. Todos ellos devuelven un objeto transversal, que se puede atravesar con el bucle for... of. La diferencia es que keys() atraviesa los nombres de las claves, values() atraviesa los valores de las claves y entrys() atraviesa los

Recorrido de pares clave-valor

for(let index of [a,b].keys()){
     console.log(index);
}
// 0
// 1

for(let elem of [a,b].values()){
     console.log(elem);
}
// a
// b

for(let [index,elem] of [a,b].entries()){
     console.log(index,elem);
}
// 0 'a'
// 1 'b'

Si no usa el bucle for...of, puede llamar manualmente al siguiente método del objeto Traverser para atravesar

let arr1 = [a,b,c];
let entries = arrr1.entries();
console.log(entries.next().value);   // [0,a]
console.log(entries.next().value);   // [1,b]
console.log(entries.next().value);   // [2,c]

índice de()

El método indexof se puede usar en cadenas y matrices.
El método indexOf() devuelve la primera aparición de un valor de cadena especificado en una cadena o matriz.
 

    arr = ['mfg', '2017', '2016'];

    console.log(arr.indexOf('mfg')); // 0
    console.log(arr.indexOf('m')); // -1
    console.log(arr.indexOf('2017'));// 1
    console.log(arr.indexOf(2017)); // -1,这里不会做隐式类型转换

some((item, index) => {}) , realiza un bucle en la matriz, ejecuta la condición en la función de parámetro para cada elemento, devuelve verdadero inmediatamente si hay un elemento que cumple la condición y no continúa recorriendo; si no se ha encontrado después de recorrer todo Devuelve falso si coincide

Determine si hay un elemento en la matriz que satisfaga la condición, siempre que haya un elemento que cumpla la condición, devolverá verdadero.

var arr1 = [1,2,3,4,5];
var arr2 = arr1.some(x => {
     return x < 3;
});
console.log(arr2);   // true

var arr3 = arr1.some(x => {
     return x < 1;
});
console.log(arr3);   // false

cada ((elemento, índice) => {}) Al contrario de algunos, cada debe devolver verdadero si cada elemento de la matriz cumple con las condiciones en la función de parámetro, y devuelve falso inmediatamente si algún elemento no cumple y ya no Continuar para iterar sobre elementos posteriores.

Determine si cada elemento de la matriz cumple la condición y solo devuelve verdadero si todos los elementos cumplen la condición.

var arr1 = [1,2,3,4,5];
var arr2 = arr1.every(x => {
     return x < 10;
});
console.log(arr2);   // true

var arr3 = arr1.every(x => {
     return x < 3;
});
console.log(arr3);   // false

4. Otros métodos de matriz

join () : une cada elemento de la matriz en una cadena con el delimitador especificado

El método join() se utiliza para convertir todos los elementos de la matriz en una cadena , y las comas se utilizan como separadores de forma predeterminada.

var arr1 = [1,2,3];
console.log(arr1.join());   // 1,2,3
console.log(arr.join('-'));   // 1-2-3
console.log(arr);   // [1,2,3](原数组不变)

Tanto toLocaleString() como toString() convierten matrices en cadenas

var arr1 = [22,3,31,12];
let str = arr1.toLocaleString();
var str2 = arr1.toString();

console.log(str);   // 22,3,31,12
console.log(str2);   // 22,3,31,12

Supongo que te gusta

Origin blog.csdn.net/qq_50497708/article/details/128216125
Recomendado
Clasificación