forEach matriz JavaScript de aplicaciones, mapa, filtro, reducir

matriz de JavaScript de métodos para explicar

 

respectivamente Los métodos método ES5.0 ES3.0:

  1. Cambiar la matriz original: inverso, más o menos, empujar, pop, unshift, turno, de empalme
  2. matriz de origen no puede ser cambiado: la operación no cambia la matriz original, la matriz se puede cambiar con el extraída : forEach, filtro, mapa, el reducir, reduceRight, Loncha, el concat, el Join, -> Split, toString

A, empuje puede recibir cualquier número de parámetros, para añadirlos a la final de la matriz por uno, y devuelve la longitud de la matriz se modifica.

Empuje para lograr una matriz: en la cadena de prototipo, todo ello contribuye a una gran variedad de programación llamado directamente sin la necesidad de llamar a una función de su uso.

Matriz .prototype. empuje  =  función  () {

var  len = argumentos.length;

para ( var  i  =  0 ; i  <  len ; i  ++ ) {

esta [ este .length] =  argumentos [ i ];

}

devolver  este .length;

}

POP: la eliminación de la última un extremo de la matriz, reduciendo la longitud de la matriz de valores, y luego devuelve el elemento eliminado

shift (): Eliminar la primera matriz original, y devuelve el valor del elemento eliminado; rendimientos matriz vacía indefinido 

parámetros de añadir a los principios de la matriz original, y devuelve la longitud de la matriz: unshift.

sort (): orden ascendente array entrada - es decir, el valor mínimo se encuentra en la parte delantera, el valor máximo en la superficie inferior. Proporciona una interfaz para las personas a definir su propia función de función que desee.

Un método para ordenar -> proporciona funciones de interfaz

1, dos parámetros deben

2, ver el valor de retorno 1) cuando el valor es negativo, entonces el número de retornos en frente de la parte frontal

2) un número positivo, el número delante de este último

3) es 0, fijo

arr . tipo ( función  ( a, b ) {

// volver ab; // ascendente

// ba retorno; Descendente

devolver  el Math. Random () -  0,5 ; // ordenación aleatoria

});

S plice: muy potente variedad de métodos, hay muchos usos que se puede lograr de borrar, insertar y reemplazar. empalme (posición de partida varios, para ser eliminado, [número a ser insertado (-s)])

II.

 C oncat: añadir parámetros a la matriz original. Este método creará una copia de la matriz actual y, a continuación añadir el parámetro recibido hasta el final de esta copia, y finalmente devuelve una matriz de nueva construcción

T Ostring: será predicado parámetros en una cadena

S piojos: Devuelve el índice en el extremo inicial del índice original de la matriz ( excluyendo el superíndice que termina ) una nueva serie de elementos entre. método slice () puede aceptar uno o dos parámetros, es decir, para volver a la posición de inicio y al final del artículo.

J OIN: la Join (separador): la matriz de elemento del grupo de una cadena , como el separador en el separador, se omite, el valor predeterminado es un separador de coma, que recibe sólo un parámetro: el separador.

S Plit: Split (separador): una cadena de división en un array , en un separador como un separador, que recibe sólo un parámetro: el separador.

Estos métodos ES3.0 es una matriz de

El nuevo ES5.0 método que tiene los siguientes métodos:

. 1, forEach: array ciclo de desplazamiento de la operación de cada elemento de la matriz a una función dada. Este método no devuelve ningún valor. parámetros de la función de tipos son el defecto han pasado parámetros, los parámetros son: una matriz de Traverse contenido; correspondiente al índice de la primera matriz, la matriz en sí.

Definir una matriz para facilitar las posteriores llamadas a los diversos métodos de los Ejemplos;

era arr = [

{Nombre: "Liu Fei", des: 'mal de cuello de útero', sexo: 'm', edad: 23},

{Nombre: 'LiuYingJian', des: 'Eucaristía buena', sexo: 'f', edad: 19},

{Nombre: 'Wang Shu', des: 'No se Eucaristía', sexo: 'f', edad: 20},

{Nombre: 'Lei Wang', des: 'el hombre no ha visto', sexo: 'm', edad: 21},

{Nombre: 'Liu Lang, des: "muy piel, sexo: 'm', edad: 22}

];

A func parámetro de función de transferencia debe (ELE cada elemento, poco índice de índice, Self sí mismo), el segundo paso puede no pasar este punto no puede pasar el punto en que se ejecuta la función de ventana

var oLiArray = document.getElementsByTagName ( 'li');

arr.forEach (function (ele, índice, auto) {

esta [índice] .innerText = ele.name;

}, OLiArray)

salida:

El resultado es una matriz de predicación cada vuelta llamar a esta función, para alcanzar una cierta función de la matriz (en este ejemplo está en la matriz para ser insertado en cada uno de los li)

Por supuesto, podemos volver a escribir para lograr la misma funcionalidad: una fácil programación por supuesto, ser utilizado directamente en el array matriz cadena de prototipo

Array.prototype.myForEach = función (func) {

// se puede pasar dos parámetros, y esta función (función durante el uso de puntero), para recibir esto con parma2

// _ llamada arr para recibir matriz actual (que invocan quienes punto)

_arr var = este, len = _arr.length, parma2 = argumentos [1] || ventana;

for (var i = 0; i <len; i ++) {

func.apply (parma2, [_arr [i], i, _arr]);

}

}

Re-llamadas puede obtener más resultados.

filtro: Filter", cada matriz se ejecuta una función dada, devuelve el conjunto de la condición de filtro.

p.ej:

var newArr = arr.filter (function (ele, índice, auto) {

si (ele.sex == 'm')

return true;

});

resultados;

Dentro de la función para determinar la verdadera o falsa, si es cierto que se devuelve el elemento actual, de lo contrario filtrar el elemento actual.

Volver a escribir:

Array.prototype.myFilter = función (func) {

// definir una nueva adición a la recepción de la última matriz vacía y devuelve los resultados

_arr var = este, len = _arr.length; parma2 = argumentos [1] || ventana, newArr = [];

for (var i = 0; i <len; i ++) {

func.apply (parma2, [_arr [i], i, _arr])? newArr.push (deepClone ({}, _arr [i])): '';

}

volver newArr;

}

M el AP: se refiere a la "mapeo" de cada elemento de la matriz ejecutar la función dada, cada llamada a la función devuelve el resultado de una matriz.

Si X --------------- + 10 ---------> Y es decir, se han incrementado cada X 10 se envía entonces a una matriz diferente de asignaciones entre

Modo de empleo:

var newArr = arr.map (function (ele, índice, auto) {

ele.name + = 10;

volver ele; o cada retorno del original //

})

Los resultados son los siguientes:

 

Vuelva a escribir:

Array.prototype.myMap = función (func) {

_arr var = este, len = _arr.length, parma2 = argumentos [1] || ventana, newArr = [];

for (var i = 0; i <len; i ++) {

newArr.push (deepClone ({}, func.apply (parma2, [_arr [i], i, _arr]))); // clon usando la profundidad no afecta a la matriz original

}

newArr retorno; // devuelve una nueva matriz aceptado

}

R & lt educe el y reduceRight: el método de reducir () desde el primer elemento de la matriz, atravesado por un extremo, y de derecha a reduceRight traversal izquierda. Función pasó a reducir () y reduceRight () recibió cuatro parámetros: el valor anterior, el valor actual del índice, y un conjunto de entrada de objeto. Cualquier valor devuelto por esta función se pasa automáticamente a la siguiente como primer parámetro. Se produce en la primera iteración de la segunda matriz, por lo que el primer elemento de la matriz es el primer parámetro, el segundo parámetro es el segundo elemento de la matriz.

Modo de empleo:

var initialValue = {nombre: '22'};

var lastValue = arr.reduce (function (preValue, curValue, índice, auto) {

preValue.name + = 1;

retorno preValue

}, valor inicial);

Como resultado de la llamada:

Más uno cada uno de izquierda a derecha, el resultado no es la última llamada como el tiempo de acumulación inferior;

Reescribiendo puede lograrse:

Array.prototype.myReduce = function (func, initialValue) {// Aquí pasar dos parámetros deben, por supuesto, el segundo y tercer parámetros como anteriormente pueden no estar disponibles para la transmisión

_arr var = este, len = _arr.length, parma2 = argumentos [2];

for (var i = 0; i <len; i ++) {

initialValue = func.apply (parma2, [initialValue, _arr [i], i, _arr]);

}

volver initialValue;

}

Aplicación: una cadena y se separa en una matriz en su totalidad, sus atributos y valores del número de la cadena original:

p.ej:

var galleta = "1 = a; 2 = b; 3 = c; 4 = d; 5 = e; 6 = f; 7 = g";

función parseCookie (str) {

var cookieArr = str.split ( ";");

era cookObj = {};

cookieArr.reduce (función (pre, siguiente, índice, auto) {

var nextArr = next.split ( '=');

cookObj [nextArr [0]] = nextArr [1];

volver pre;

} Chokobj)

volver cookObj;

}

var cocinero = parseCookie (cookie);

console.log (cocinar);

 

salida:

Aunque el método es difícil reducir un poco difícil, pero sigue siendo un buen uso;

cada Método: El análisis de la matriz no está en línea con cada uno de los requisitos si devuelve falso (correspondiente &&)

algún método de: determinar la presencia de la matriz no es un uno satisfactorio, si se devuelve verdadero. (Equivalente a ||)

bandera var = arr.every (function (ele, índice, auto) {

ele.age retorno> 20;

});

var flag1 = arr.some (function (ele, índice, auto) {

ele.age retorno> 20;

});

salida

 

Volver a escribir:

Array.prototype.myEvery = función (func) {

// Añadir una determinación variable de facilitar la vuelta verdad

_arr var = este, len = _arr.length; parma2 = argumentos [1] || ventana, flag = true;

for (var i = 0; i <len; i ++) {

if (! func.apply (parma2, [_arr [i], i, _arr])) {

flag = false;

}

}

bandera de retorno;

}

algunos método similar

 

 

El objetivo principal es volver a escribir para que podamos entender mejor los principios subyacentes, fácil de usar

No tiene que ser muy dependiente de los métodos de otras personas para aumentar la autonomía

 

Lo anterior es una serie de métodos de uso común en JavaScript. Gracias a adoptar, la escritura propuesto su propio

Se han publicado 19 artículos originales · ganado elogios 58 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/cyg_l02/article/details/82286432
Recomendado
Clasificación