1. 安全的串接字串
假設你有一些不確定的變數類型
而你想將它們串接成字串
這樣可能會導致錯誤
而你想將它們串接成字串
這樣可能會導致錯誤
var one = 1;
var two = 2;
var three = '3';
var result = one + two + three; // 會得到 "33" 而非 "123"
var one = 1;
var two = 2;
var three = '3';
var result = ''.concat(one, two, three); // 得到 "123"
2. 把字串轉成數字
如果你有一個字串譬如說 ‘1’, ‘123’ 之類的
而你需要把它轉成數字
你可能會這樣做
而你需要把它轉成數字
你可能會這樣做
var one = '1';
var two = '2';
var numberOne = Number(one); // 1
var numberTwo = parseInt(two); // 2
但這樣可以更簡單快速
var one = '1';
var numberOne = +one; // 1
3. 移除陣列中的重複元素
如果有一個陣列
裡面有一些元素是重複的
可以用這樣的方式來移除他們
裡面有一些元素是重複的
可以用這樣的方式來移除他們
var originArr = [1, 'a', 1, 'a'];
var deduped = originArr.filter(function(el, i, arr){
return arr.indexOf(el) === i;
});
console.log(deduped); // [1, 'a']
用 ES6 的語法可以寫得更簡潔
var originArr = [1, 'a', 1, 'a'];
var deduped = originArr.filter((el, i, arr) => arr.indexOf(el) === i);
console.log(deduped); // [1, 'a']
4. 把二維陣列扁平化
三種不同的解決方法
將二維陣列合併為單一的陣列
將二維陣列合併為單一的陣列
給定一個陣列:
var myArray = [[1, 2],[3, 4, 5], [6, 7, 8, 9]];
我們想得到這個結果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
方法一:
var myNewArray = [];
for (var i = 0; i < myArray.length; ++i) {
for (var j = 0; j < myArray[i].length; ++j){
myNewArray3.push(myArray[i][j]);
}
}
console.log(myNewArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
方法二:
var myNewArray = myArray.reduce(function(prev, curr) {
return prev.concat(curr);
});
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
方法三:
var myNewArray = [].concat.apply([], myArray);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
5. 找到陣列中的最大最小值
內建函式 Math.max() 和 Math.min() 可以從參數中找到最大值和最小值
Math.max(1, 2, 3, 4); // 4
Math.min(1, 2, 3, 4); // 1
如果要在陣列中找最大最小值可以這樣用
var numbers = [1, 2, 3, 4];
Math.max.apply(null, numbers) // 4
Math.min.apply(null, numbers) // 1
透過 ES6 的展開運算子來完成
var numbers = [1, 2, 3, 4];
Math.max(...numbers) // 4
Math.min(...numbers) // 1
6. 用邏輯運算代替條件判斷
在某個條件下做某些事情
if(foo == 10){
doSomething();
}
// 可以寫成這樣
foo == 10 && doSomething();
有時候在函式內要判斷使用者有沒有輸入參數
沒有的話就設為預設值
沒有的話就設為預設值
if(!foo){ // 如果 foo = undefined 或 null
foo = 10;
}
// 可以寫成這樣
foo = foo || 10;
7. 判斷是否是很多數值中其中一個
這樣寫很冗長
if(foo==1 || foo==22 || foo==43 || foo==51 || foo==63 || foo==83){
doSomething();
}
可以改成這樣
if([1, 22, 43, 51, 63, 83].indexOf(foo) != -1){
doSomething();
}
8. 清空陣列
通常你會這樣清空陣列
var list = [1, 2, 3, 4];
list = [];
但有效能更好的清空陣列方式
var list = [1, 2, 3, 4];
list.length = 0; // list = []
如果只想刪掉最後兩個元素
var list = [1, 2, 3, 4];
list.length = list.length - 2; // list = [1, 2]
資料來源:賴瑞的程式筆記