# arrayEachRight
# Description
创建了一个内部使用的 数组 forEach
,有点类似于 every
,在 iteratee
返回 false
时结束
不同点在于 是从右往左(从后往前)遍历
# Params
(array, iteratee)
iteratee - 每一次迭代调用的函数
# Return
Array
# Code
function arrayEachRight(array, iteratee) {
let length = array == null ? 0 : array.length
while (length--) {
if (iteratee(array[length], length, array) === false) {
break
}
}
return array
}
# Analyze
- 方法整体相对简单,和原生
JavaScript
forEach
不同的是,arrayEach
使用了while
,可以遍历稀疏数组 - 遍历是从右往左遍历,获取的值以及下标从
length - 1
开始 - 在
while
循环内部调用了iteratee
,传入了 当前元素,下标,及完整数组,如果返回值为false
则跳出循环,也就是结束遍历 - 最终返回数组
# Remark
# Example
const arr = [1,2,3,4,5]
function itemToString(item, index, arr) {
if (item > 4) {arr[index]+='str'}
else return false
}
arrayEachRight(arr, itemToString)// [ 1, 2, 3, 4, '5str' ]