Lichen5221 / Report-Daily

記錄每日上課內容與作業。
0 stars 0 forks source link

2021-05-12 #23

Open Lichen5221 opened 3 years ago

Lichen5221 commented 3 years ago

JS101 綜合練習題 Lv 1

回傳第一個大寫字母以及它的 index

function position(str) {
  var arr = str.split('')
  for (let i = 0; i < str.length; i++) {
    var ascii = str.charCodeAt(i)
    if (ascii >= 65 && ascii <= 90){
      return arr[i] + ' ' + arr.indexOf(str[i])
    } 
  }
  return -1
}

console.log(position('abCD'))

回傳陣列裡面所有小於 n 的數的數量

function findSmallCount(arr, n) {
  let s = 0
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < n) {
      s += 1
    }
  }
  return s
}

console.log(findSmallCount([1, 2, 3, 4], 100))

老師利用 filter 解法:

function findSmallCount(arr, n ) {
  return arr.filter(function(item) {
    return item < n //留下小於 n 的元素
  }).length //回傳該陣列長度
}

回傳陣列裡面所有小於 n 的數的總和

function smallCountSum(arr, n) {
  let s = 0
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < n) {
      s += arr[i]
    }
  }
  return s
}

console.log(smallCountSum([3, 2, 5, 8, 7], 0))

回傳陣列裡面所有小於 n 的數

function findAllSmall(arr, n) {
  var newArr = []
  for(let i = 0; i < arr.length; i++) {
    if (arr[i] < n) {
      newArr.push(arr[i])
    }
  }
  return newArr
}

console.log(findAllSmall([1, 3, 5, 4, 2], 4))

回傳陣列總和

function sum(arr) {
  var newarr = 0
  for(let i = 0; i < arr.length; i++) {
    newarr += arr[i]
  }
  return newarr
}

console.log(sum([-1, 1, 2, -2, 3, -3]))

老師用 reduce 解法,我暫時不想打。

JS101 綜合題目練習 Lv 2

其實有些都在 leetcode 的時候寫過,但是為了確保我有真的理解並且學起來,我還是要要求自己把全部再寫出來一遍。

好多星星

function stars(n) {
  let s = ''
  for(let i = 1; i <= n; i++) {
    s += '*'
    console.log(s)
  }
}

stars(6)

好多星星回傳版

我沒有搞懂為什麼一定要用到兩個 function,我最討厭必須要拆解成很多個 function 的方法,目前還沒寫出自己的解法,所以只上傳老師的解法:

function star(i) {
  var result = ''
  for (var j = 1; j <= i; j++) {
    result = '*'
  }
}

function makeStars(n) {
  var arr = []
  for (var i = 1; i <= n; i++) {
    arr.push(star[i])
  }
  return arr.join('\n')
}
console.log(makeStars(5))

好多星星加強版

function stars2(n) {
  for(let i = 1; i <= n; i++){
    let s = ''
    for(let j = 1; j <= i; j++) {
      s += '*'
    }
    console.log(s)
  }
  for(let i = n - 1; i >=1; i--) {
    let a = ''
    for(let j = 1; j <= i; j++) {
      a += '*'
    }
    console.log(a)
  }
}

stars2(5)

乘法表

function table(n){
  for (let i = 1; i <= 9; i++){
    let a = n * i
    console.log(n + '*' + i + '=' + a)
  }
}
table(6)
table(7)

九九乘法表

function table9to9() {
  for (let i = 1; i <= 9; i++){
    for (let j = 1; j <= 9; j++){
      let a = i * j
      console.log(i + '*' + j + '=' + a)
    }
  }
}

table9to9()

費式數列

老實說我卡了一陣子,不知道怎麼把 0, 1 塞進去陣列,結果一看老師的解法,啊⋯⋯原來直接設就好了⋯⋯而且不用小於無限大,小於 n 就好⋯⋯還以為要把所有陣列列出來然後再去印出第 n 個數字,看來是我想太多反而卡住了。

function fib(n){
  var fib = [0, 1]
  for (let i = 2; i <= n; i++){
    fib[i] = fib[i - 1] + fib[i - 2]
  }
  return fib[n]
}

console.log(fib(8))

字串反轉

function reverse(str) {
  let answer = ''
  for (let i = str.length - 1; i >= 0; i--) {
    answer += str[i]
  }
  return answer
}
console.log(reverse('12345aa'))

大小寫互換

function swap(str) {
  var s = ''
  for (let i = 0; i < str.length; i++) {
    if (str[i] >= 'A' && str[i] <= 'Z') {
      s += str[i].toLowerCase()
    } else {
      s += str[i].toUpperCase()
    }
  }
  return s
}

console.log(swap('AbCdE'))

老師有不同解法,有空再補上。

找出最小值

function findMin(arr) {
  var min = arr[0]
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < min) {
      var min = arr[i]
    } 
  }
  return min
}

console.log(findMin([1, 6, 0, 33, 44, 88, -10]))

找出第 n 小的值

我覺得這個有點難,晚點再來寫。

Lichen5221 commented 3 years ago

來補一些 Git 的知識。

為什麼我們需要 branch?

如果只是 commit,為線性開發。

線性開發時,如果碰到要 debug,同時新功能沒有完成的狀況下,會將新功能連同修復好 bug 的版本一起送出去給其他人看見。

因此需要多線開發。

持續開發新功能的線,以及修復 bug 的線,當新功能開發完,與 debug 成功後再將兩線 marge,成為新的釋出穩定版(擁有新功能又已經 debug )。

一眼看穿 branch

以資料夾實作 branch,增強對於 branch 功能的理解。

我覺得老師應該可以用上一支影片的範例做資料夾講解,不然其實聽得更混亂 XD。

給我一個新宇宙 git branch

git branch 分支名:創造新分支。 git branch -v:看自己有什麼分支,以及在哪個分支。 git branch -d 分支名:刪除該分支。

跨越宇宙 git checkout

git checkout 分支名:進入該分支。

當兩個宇宙合併 git merge

位在等待合併的分支(通常是 master )上,利用 git merge 欲合併的分支名,將欲合併的分支合併進當下在的支線上。

把該支線併進主線的意思。

當世界崩塌 conflict

更改到同檔案同個地方才會發生,要手動解決。