chunk()

_.chunk(array, [size = 1])
매일 lodash 방법 원본 분석 업데이트
chunk () 방법 은 배열 의 요 소 를 블록 으로 나 누 는 것 입 니 다. 각 조각 을 하나의 배열 로 하고 마지막 으로 각 블록 으로 구 성 된 배열 로 돌아 가 는 것 입 니 다.
example:
_.chunk([1, 3, 5, 7, 9], 2)
// [[1, 3], [5, 7], [9]]
_.chunk([1, 2, 3, 4, 5, 6], 3)
// [[1, 2, 3], [4, 5, 6]]
_.chunk([1, 2, 3, 4, 5], 0)
// []
_.chunk([1, 2, 3, 4, 5])
// [[1], [2], [3], [4], [5]]

chunk (arr, size) 는 두 개의 인 자 를 받 습 니 다. 하 나 는 원래 배열 입 니 다. 하 나 는 블록 의 크기 size 입 니 다. 기본 값 은 1 입 니 다. 원래 배열 의 요 소 는 size 의 크기 에 따라 처음부터 블록 을 나 누고 각각 새로운 배열 을 구성 합 니 다. 마지막 요소 의 개수 가 size 의 크기 가 부족 하면 빠 른 구성 을 할 것 입 니 다.
원본 분석:
function chunk(array, size) {
  // size    1
  //   size  0, 0  ,  0,  size 
  size = Math.max(size, 0)
  //   array null,length 0,   array.length
  const length = array == null ? 0 : array.length
  //   length 0  size  1,       
  if (!length || size < 1) {
    return []
  }
  let index = 0
  let resIndex = 0
  //         size             ,              result
  const result = new Array(Math.ceil(length / size))

  //    while           array  ,    array  size            result   
  // while   index 0  ,    size  ,  index    length     
  //      ,result      resIndex 1
  //        , array      index (index+size)           ,         result   
  //   array        slice      slice       
  while (index < length) {
    result[resIndex++] = slice(array, index, (index += size))
  }
  //       result
  return result
}

실현 사고: 원 배열 의 길이 와 size 를 이용 하여 블록 을 나 눌 수 있 는 수량 을 계산 한 다음 에 블록 수 를 이용 하여 새로운 배열 을 만 든 다음 에 원 배열 을 옮 겨 다 니 며 index 에서 index + start 사이 의 요소 (start 포함, index + start 포함 하지 않 음) 를 캡 처 하여 새 배열 에 순서대로 주 고 마지막 으로 새 배열 로 돌아 갑 니 다.
2019/6/16

좋은 웹페이지 즐겨찾기