método reduce ()
1. Este método recibe una función como acumulador, y cada valor de la matriz (de izquierda a derecha) se reduce y finalmente se calcula como un valor;
2. Este método se puede utilizar como una función de orden superior para componer la función.
Nota
Este método no ejecutará la función de devolución de llamada para matrices vacías.
gramática
array.reduce (función (total, currentValue, currentIndex, arr), initialValue)
parámetro | descripción | ||||||||||
función, total, valor actual, índice, arr, | Requerido, usado para ejecutar la función de cada elemento de la matriz.
|
||||||||||
valor inicial | Opcional, el valor inicial pasado a la función |
Si no se establece el valor inicial, el ciclo comenzará en el índice cero.
Aplicación práctica (1)
官方案例-累加计算
function getSum(total, num) {
return total + num;
}
[65, 44, 12, 4].reduce(getSum)
//没有设置初始值,循环从数组索引为零开始执行。
Aplicación práctica (dos)
//判断数组是否连续
let a1rr = [3, 4, 4, 6, 7, 8, 9, 10, 11];
function getContinueFun2(arr) {
let ress = arr.reduce((flag, cur, ind, arr) => {
arr[ind + 1] - cur == 1 ? flag++ : ''
return flag;
}, 0);
return ress == arr.length - 1
}
getContinueFun2(a1rr)
Aplicación práctica (3)
//每个值出现次数都为一。如果是返回true,否则返回false。
function getUniNum(arr) {
let obj = arr.reduce((obj, curr, i, arr) => {
obj[curr] ? obj[curr]++ : obj[curr] = 1;
return obj
}, {});
return Object.values(obj).length === arr.length
}
getUniNum([1,'name',2,4,3,'name'])
Novato, bienvenido a discutir.