紀錄一些檢查型別的方法,以及陣列去重比較乾淨的寫法
const str = 'String'
typeof str //'string'
typeof NaN // 結果為 'number'
typeof null // 結果為 'object'
typeof function(){} // 結果為 'function '
// 使用 let , const 宣告不給予值會直接噴錯
var test
typeof test // 'undefined'
if(typeof test !=='undefined'){
// test is defined
}
const test = null;
// 先判斷是否為 Falsy 在判斷是否 typeof 回傳 object
if (!test && typeof test === 'object') {
console.log('Var is null');
}
const nullObj = null // 不會噴 console
const obj = {} // 會噴 console
if(typeof obj === 'object' && obj !== null){
console.log('Var is Object')
}
const arr = [1]
Array.isArray(arr) // true
// 先判斷是否為陣列 或者存在
// length 為 0 時 falsy 經過 ! 轉為 true
// 因此 arr 空陣列時會符合結果
if ( arr && !arr.length) {
console.log('Var is Empty Array')
}
if (arr && arr.length) {
console.log('Var is Array But Not Empty')
}
const arr = [1, 1, 2, 2, 3, 4, 5, 6]
const includesArray = []
const indexOfArray = []
arr.forEach((el) => {
// 當 includes 為 false 即不在暫存陣列時,將其加入
if (!includesArray.includes(el)) { includesArray.push(el) }
// 當 indexOf 為 -1 即不在暫存陣列時,將其加入
if (indexOfArray.indexOf(el) < 0) { indexOfArray.push(el) }
})
console.log(includesArray)
console.log(indexOfArray)
const filterArr = arr.filter(function(el, index, array) {
return array.indexOf(el) === index
})
console.log(filterArr)
// ES6 SET
const arr = [1, 1, 2, 2, 3, 4, 5, 6]
const setArr = Array.from(new Set(arr))
console.log(setArr)