ArrayEach

Published: · LastMod: September 28, 2021 · 199 words

ArrayEach实现循环 🔗

while中的break实现原来Array.prototype.forEach未实现的打断功能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
function arrayEach(array, iteratee) {
  // 从左往右
  let index = -1
  const length = array.length
  // 从右往做, 换个思路
  /**
   *  let length = array == null ? 0 : array.length
   *  
   *  while(length--) {
   *    if(iteratee(array[length], index, array) === false) ...
   *  }
  */

  while (++index < length) {
    if (iteratee(array[index], index, array) === false) {
      break
    }
  }
  return array
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
let a = [1,2,3,4]
arrayEach(a, (item) => {
  console.log(item)
  return item < 2
}) // 1、2


a.forEach(item => {
  console.log(item)
  return item > 1
}) // 1、2、3、4