第二周筆記 (JS) -4


Posted by RafealChen on 2021-04-30

常用內建函式

Number類型的內建函式

MDN - Number

  1. 字串轉數字

    var a = '10'
    var b = '20'
    console.log(Number(a) + parseInt(b, 10(幾進位)))
    parseFloat 轉換成有小數點的; parseFloat.toFixed() //傳需要幾位小數點

  1. Number.MAX_VALUE 在JS裡可存的最大數字,若超過則會不精準
  2. Math 很多跟數學 計算有關的
    • Math.ceil 無條件進位
    • Math.floor 無條件捨去
    • Math.round 四捨五入
    • Math.sqrt 開更號
    • Math.pow 次方
    • Math.random 可產生隨機數 // 0-1的數字 0~0.999999999 所以可用Math.random x 10等等
  3. 數字變字串 .toString() 或 (數字 + '')

String類型的內建函式

MDN - String

  1. .toLowerCase, .toUpperCase 小寫變大寫 大寫變小寫

    var a = 'abc'.toUpperCase()
    console.log(a)

ASCII code 字串內 的電腦編碼
.charCodeAt() 找出編碼
.fromCharCode() 利用編碼還原成字

  1. .indexOf() 尋找字串當中的單字,以所搜尋單字的第一個字在字串當中的位置顯示 若單字不存在以-1表示

  2. .replace(原單字, 欲取代) 取代字串 但只會換第一個
    若要全換要用RegExp 正規表達式 /單字/g g是global的意思

  3. .split() 把字串切開成陣列

  4. . trim() 把前後空格去掉

Array類型的內建函式

MDN - Array

  1. .join() 在陣列空隙間結合 並回傳成一個字串
    var arr = [1,2,3]
    console.log(arr.join("!")) => 1!2!3
    
  2. .map() 可放函式 將每個元素傳進函式
    var arr = [1,2,3]
    function double(x){
     return x*2
    }
    console.log(arr.map(double)) => [2,4,6]
    
  3. .filter() 可放函式 過濾掉false的元素

    var arr = [1,2,3]
    console.log(
    arr
    .map(function (x){
     return x*2
    })
    .filter(function(x) {
     return x>0
     })
    )
    
  4. .slice() 只想要陣列的某一個部分

  5. .splice() 會改變原本array
  6. .sort() 根據字母順序 or 第一個字順序排

新手常犯錯誤

回傳 與 印出

function add(a,b){
    console.log(a,b)
    return undefined (預設)
}
console.log(add(1,2))
=> 
1 2
undefined

Immutable 不可變

primitive values : all typed except objects define immutable values (ex: boolean, number, null.....)

var a = 'hello'
a += 'yo'

a: 'hello'  記憶體空間 : 0x01
a : 'helloyo' 記憶體空間 : 0x02

a會改變 但原本的hello不會變
----------------------------
var a = "hello"
a.toUpperCase()
console.log(a)
=> a並不會變

a = a.toUpperCase()
=> a才會變

array : object 一種 會改變原本的值
ex: arr.push
但 arr.indexOf 不會改變

var arr = [1,2,3]
arr : [1,2,3] 記憶體位置 0x01
arr.push(4)
arr : [1,2,3,4] 記憶體位置 0x01

遇到會改變的 return就不會是原本的
ex: arr.push()
增加一個新的值 return增加後的長度

var arr = [1,2,3,4,5]
arr.push("sdsf")
console.log(arr)
=> arr : [1,2,3,4,5,"sdsf"]

var arr = [1,2,3,4,5]
arr = arr.push("sdsf")
console.log(arr)
=> arr : 6

因此 array會改變原本值的function要注意return是什麼!!!!!!
總結:
對於字串,數字來說因為原本的值不會被改變 因此要給予一個回傳值的地方
對於array object來說 若function會改變原來的值 直接使用function

console.log

在不清楚的時候用console.log

function isPrime(num){
    console.log('num;',num)
    if (num ===1) return false
    if (num ===2) return true
    for(var i = 2; i<num; i++){
        console.log('i:', i)
        if (num % i === 0) {
            console.log('num % i === 0:', num, i)
            return false
        } else {
            console.log('else:', num, i)
            return true
        }
    }
}
console.log(isPrime(3))



正解:
function isPrime(num){
    if (num ===1) return false
    if (num ===2) return true
    for(var i = 2; i<num; i++){
        if (num % i === 0) {
            return false
        } 
    }
    return true
}

console.log(isPrime(15))









Related Posts

終端機顯示Cannot find module 'sass'

終端機顯示Cannot find module 'sass'

Scrapy 和 Redis 分散式crawlers (蘋果日報為例)

Scrapy 和 Redis 分散式crawlers (蘋果日報為例)

曾經的前端  library 霸主 :  jQuery

曾經的前端 library 霸主 : jQuery


Comments