Study Notes

Study Notes

  • Source
  • WebDesign
  • Javascript

›Basic Algorithm Script

Basic Javascript

  • Basic JavaScript Overview

ES6

  • ES6 Overview

Regular expression

  • Regular Expression Overview
  • Lookahead
  • Capture Group

Debugging

  • Debugging Overview

Object Oriented Programming

  • Object Oriented Programming Overview
  • Mixin
  • Closure
  • IIFE

Functional Programming

  • Functional Programming

Basic Algorithm Script

  • Reverse a String
  • Factorialize a Number
  • Find the Longest Word in a String
  • Return Largest Numbers In Arrays
  • Repeat a String
  • Truncate a String
  • Finders Keepers
  • Boo Who
  • Title Case a Sentence
  • Slice and Splice
  • Falsy Bouncer
  • javascript-algorithms-anddata-structures/basic-algorithm-scripting/where-do-i-belong
  • Mutations
  • Chunky Monkey

Intermediate Algorithm Script

  • Sum All Numbers in a Range
  • Diff Two Arrays
  • Seek and Destroy
  • Wherefor Art Thou
  • Spinal Tap Case
  • Search and Replace
  • DNA Pairing
  • Missing letters
  • Sorted Union
  • Convert HTML Entities
  • Sum All Odd Fibonacci Numbers
  • Smallest Common Multiple
  • Drop it
  • Steamroller
  • Binary Agents
  • Everything Be True
  • Arguments Optional
  • Make a Person
  • Map the Debris

Chunky Monkey

个人思路:

将数组按照传入的 size 进行分组,就可以利用 splice() 的特性,去删除数组中前两个元素,并获取删除了的元素(一开始有想过用 pop(),但是由于一次只能获取一个元素,感觉有点不方便就弃用了)。由于 splice() 是会改变原来的数组的,所以可以通过判断原来的数组长度是否为 0 来判断数组元素是否已经分组完毕。

当前这个还可以用 slice() 来进行处理,不过因为 slice() 处理之后是返回一个新的数组而不是改变原来的数组,因此判断条件需要调整。

function chunkArrayInGroups(arr, size) {
  let newArray = []
  while(arr.length !== 0) {
    newArray.push(arr.splice(0, size));
  }
  return newArray;
}

chunkArrayInGroups(["a", "b", "c", "d"], 2);

FreeCodeCamp 提供了三种高级思路,前两种跟我的思路差不多,最后一种比较有意思,用到了递归,我们来看一下使用递归的思路。

  • 通过 slice() 进行分组
  • 每次递归,都是返回一个二维数组
  • 利用 concat() 进行二维数组的合并
function chunkArrayInGroups(arr, size) {
  if (arr.length <= size){
    return [arr];
  }
  else {
    return [arr.slice(0,size)].concat(chunkArrayInGroups(arr.slice(size),size));
  }
}
← MutationsSum All Numbers in a Range →
Copyright © 2019 罗惠东