---
# System prepended metadata

title: JS 綜合練習 V1
tags: [題目, 程式導師, JavaScript]

---

# JS 綜合練習 V1

###### tags: `程式導師` `JavaScript` `題目`

## 練習一：印出一到九

請分別用 for loop 以及 while 迴圈，印出 1~9。

預期輸出：

1
2
3
4
5
6
7
8
9

```javascript=
//用 for loop ，印出 1~9

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


//用 while loop ，印出 1~9
var i = 1;

while(i<10){
    console.log(i)
    i++
}
```

## 練習二：寫一個能夠印出 1~n 的函式

請寫一個函式叫做 print，接收一個是數字的參數 n，並且印出 1~n。

print(1) 預期輸出：

1

print(3) 預期輸出：
1
2
3

print(9) 預期輸出：
1
2
3
4
5
6
7
8
9

```javascript=
const print=(n) => {
    for (i=1; i<=n; i++) {
      console.log(i)
    }
}

print(1)
print(3)
print(9)
```

## 練習三：寫一個能夠印出 n 個 * 的函式

寫一個函式 star，接收一個參數 n，並印出 n 個 *
（禁止使用內建函式 repeat）

star(1) 預期輸出：*
star(5) 預期輸出：*****
star(10) 預期輸出：**********

```javascript=
//寫法1：用陣列再轉成字串
const star=(n) => {
  arr = []
  for (i=1; i<=n; i++) {
    arr.push('*')
  }
  console.log(arr.join(''))
}

star(1)
star(5)
star(10)


//寫法2：字串能用陣列概念，全以字串的方式處理
const star=(n) => {
  var str = ""
  for (i=1; i<=n; i++) {
    str+="*"
  }
  console.log(str)
}

star(1)  //*
star(5)  //*****
star(10) //**********
```

## 練習四：寫一個能回傳 n 個 * 的函式

請寫出一個叫做 star 的 function 並且接受一個參數 n，能回傳 n 個 *。

star(1) 會回傳 *
star(5) 會回傳 *****

所以 console.log(star(5)) 的預期輸出是：*****

```javascript=
//寫法1：以陣列轉字串
const star=(n) => {
  arr = []
  for (i=1; i<=n; i++) {
    arr.push('*')
  }
  return(arr.join(''))
}

console.log(star(1))
console.log(star(5))
console.log(star(10))

//寫法2：字串能用陣列概念，全以字串方式處理
const star=(n) => {
  var str = ""
  for (i=1; i<=n; i++) {
    str+="*"
  }
  return(str)
}

console.log(star(1))
console.log(star(5))
console.log(star(10))
```

## 練習五：判斷大小寫

請寫一個叫做 isUpperCase 的 functuon，並且接收一個字串，回傳這個字串的第一個字母是否為大寫。

isUpperCase("abcd") 正確回傳值：false

isUpperCase("Abcd") 正確回傳值：true

isUpperCase("ABCD") 正確回傳值：true

isUpperCase("aBCD") 正確回傳值：false

```javascript=
//練習五：判斷大小寫

//寫一個叫做 isUpperCase 的 functuon，並且接收一個字串，回傳這個字串的第一個字母是否為大寫。

const isUpperCase=(str) => {
  var asciiCode = str[0].charCodeAt();
  console.log(asciiCode)
  if(asciiCode >= 97) {
    return('false');
  } else {
    return('true');
  }
}


console.log(isUpperCase("abcd"))
console.log(isUpperCase("Abcd"))
console.log(isUpperCase("ABCD"))
console.log(isUpperCase("aBCD"))
```

## 練習六：回傳第一個大寫字母以及它的 index

請寫一個 function position，接收一個字串並回傳這個字串裡面的第一個大寫字母跟它的 index，若沒有則回傳 -1。

position("abcd") 正確回傳值：-1

position("AbcD") 正確回傳值：A 0

position("abCD") 正確回傳值：C 2

```javascript=
const checkUppercase=(str) => {
  var sum = 0;

  for (var i=0; i<str.length; i++){
    var asciiCode = str[i].charCodeAt();

    if (asciiCode < 97){
      sum+=1
      return(str[i] + " " + i)
    } else {
      sum+=0
    }
  }

  if (sum === 0) {
    return("-1")
  }
}


console.log(checkUppercase("abcd"))
console.log(checkUppercase("AbcD"))
console.log(checkUppercase("abCD"))
```

## 練習七：回傳陣列裡面所有小於 n 的數的數量

請寫出一個函式 findSmallCount，接收一個陣列跟一個數字 n，回傳有多少個數小於 n。

findSmallCount([1, 2, 3], 2) 預期回傳值：1

findSmallCount([1, 2, 3, 4, 5], 0) 預期回傳值：0

findSmallCount([1, 2, 3, 4], 100) 預期回傳值：4

```javascript=
const findSmallCount=(arr, n) => {
  var calculator = 0;

  for (var i=0; i<arr.length; i++){
    if(arr[i] < n){
      calculator+=1
    }
  }
  return(calculator)
}


console.log(findSmallCount([1, 2, 3], 2))  //1
console.log(findSmallCount([1, 2, 3, 4, 5], 0))  //0
console.log(findSmallCount([1, 2, 3, 4], 100))  //4
```

## 練習八：回傳陣列裡面所有小於 n 的數的總和

請寫一個函式 findSmallerTotal，接收一個陣列以及數字 n，回傳陣列裡面所有小於 n 的數的總和。

findSmallerTotal([1, 2, 3], 3) 正確回傳值：3

findSmallerTotal([1, 2, 3], 1) 正確回傳值：0

findSmallerTotal([3, 2, 5, 8, 7], 999) 正確回傳值：25

findSmallerTotal([3, 2, 5, 8, 7], 0) 正確回傳值：0

```javascript=
const findSmallCount=(arr, n) => {
  var calculator = 0;

  for (var i=0; i<arr.length; i++){
    if(arr[i] < n){
      calculator+=1
    }
  }
  return(calculator)
}


console.log(findSmallCount([1, 2, 3], 2))  //1
console.log(findSmallCount([1, 2, 3, 4, 5], 0))  //0
console.log(findSmallCount([1, 2, 3, 4], 100))  //4
```

## 練習九：回傳陣列裡面所有小於 n 的數

請寫一個函式 finaAllSmall，接收一個陣列跟一個數字 n，回傳一個裡面有所有小於 n 的數的陣列（需按照原陣列順序）。

findAllSmall([1, 2, 3], 10) 正確回傳值：[1, 2, 3]

findAllSmall([1, 2, 3], 2) 正確回傳值：[1]
findAllSmall([1, 3, 5, 4, 2], 4) 正確回傳值：[1, 3, 2]

```javascript=
const findAllSmall=(arr, n) => {
  var newArr = [];

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


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

## 練習十：回傳陣列總和

請寫一個 function sum，接收一個陣列並回傳陣列中數字的總和。

sum([1, 2, 3]) 預期回傳值：6

sum([-1, 1, 2, -2, 3, -3]) 預期回傳值：0

```javascript=
const sum=(arr) => {
  var total = 0;

  for (var i=0; i<arr.length; i++){
    total+=arr[i]
  }
  return(total)
}


console.log(sum([1, 2, 3]))  //6
console.log(sum([-1, 1, 2, -2, 3, -3]))  //0
```