iT邦幫忙

2021 iThome 鐵人賽

DAY 7
1
Modern Web

白話JavaScript系列 第 7

Day07-Loop

  • 分享至 

  • xImage
  •  

前言

Loop對於程式來說非常非常非常之重要,手動一萬次跟電腦做一萬次效率差非常多,當然也沒有人會去做很hardcode的事情吧???

以下為Loop(迴圈)最常用到的三個語法。

  • for
  • while
  • do while

話不多說,程式寫起來!!!

for loop

for(var i = 1; i < 10; i++) {
  console.log(i)// 1 - 9
}

while loop

var i = 1

while(i < 10) {
  console.log(i) //1 - 9
  i++ 
}

do while

do while

var i = 1

do{
  console.log(i)
} while(i == 0) 

do while比較特別點在於,就算判斷式不成立,依然會執行一次,而while 與 for則是不成立,即不執行

接下來我們就來練習怎麼做計數器吧

var temp = 0
for(var i = 1; i <= 10; i++) {
  temp = temp + i
  //也可以寫成
  temp += i
}
console.log(temp)//55

簡便的loop

for in

  • 適用於object

這邊會介紹如何使用迴圈依序把object或array讀取出來

首先for ... in 主要是針對object的key,以下我們先用item帶入user,可以看出console.log出來都是user的key

var user = {
  name: 'Ian',
  age: 22,
  sex: 'male'
}

for(item in user){
  console.log(item)
  /* name age sex*/
}

有上面的key值之後,聰明如你,就知道怎麼帶入key印出value了吧

var user = {
  name: 'Ian',
  age: 22,
  sex: 'male'
}

for(item in user){
  console.log(user[item])
  /* Ian 22 male */
}

for of

  • 適用於array中
var tempArr = ['apple','banana','watermelon','guava','pinapple']

for(let i of tempArr) {
  console.log(i) 
  /*
  apple
  banana
  watermelon
  guava
  pinapple
  */
}

但要印出array中的值也可以使用for做處理,也是大家很常用到的
var tempArr = ['apple','banana','watermelon','guava','pinapple']

for(var i=0; i < tempArr.length; i++){
  console.log(tempArr[i])
  /*
  apple
  banana
  watermelon
  guava
  pinapple
  */
}

上面的寫法,首先for裡面的判斷從0開始很正常,因為對象是array,然後若i小於array.length,i++,
並且透過把變數帶入array中達成依序輸出array[0],array[1]...等效果。

map

  • 回傳新的陣列
const a = [1,2,3,4,6]

const result = a.map((numbers) => numbers > 2)
console.log(result); //[ false, false, true, true, true ]

filter

  • 依序比對,若為true即回傳
const a = [1,2,3,4,6]

const result = a.filter((numbers) => numbers > 2)
console.log(result); //[ 3, 4, 6 ]

reduce

syntax

reduce((preventValue, init) => {...})
const a = [1,2,3,4,6]
let init = 0
const result = a.reduce((numbers,init) => init += numbers)
console.log(result); //[ 3, 4, 6 ]

/images/emoticon/emoticon08.gif


上一篇
Day06-Scope && Hoisting
下一篇
Day08-import/export
系列文
白話JavaScript28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言