天天看點

【譯】9個強大的JavaScript技巧

【譯】9個強大的JavaScript技巧

我喜歡優化!

但是,如果站點無法在使用者的​

​Internet Explorer 11​

​浏覽器中運作,他們不會在乎我的優化代碼。

我使用​​Endtest​​來建立自動測試,并在跨浏覽器的雲上執行它們。

​​Netflix​​​使用相同的工具來測試他們的​

​web apps​

​。

你應該檢視​​文檔​​

下面是9個極其強大的​

​JavaScript​

​技巧。

1.全部替換

我們知道​

​string.replace()​

​​函數隻能替換第一次出現的情況。你可以在正規表達式的末尾添加​

​/g​

​來替換所有出現的内容。

var example = "potato potato";
console.log(example.replace(/pot/, "tom"));
// "tomato potato"
console.log(example.replace(/pot/g, "tom"));
// "tomato tomato"      

2.提取唯一值

我們可以僅僅通過​

​Set​

​​對象和​

​Spread​

​運算符就可以建立一個唯一值的數組。

var entries = [1, 2, 2, 3, 4, 5, 6, 6, 7, 7, 8, 4, 2, 1]
var unique_entries = [...new Set(entries)];
console.log(unique_entries);
// [1, 2, 3, 4, 5, 6, 7, 8]      

3.數字轉字元串

我們隻需要使用帶空引号集的串聯運算符即可。

var converted_number = 5 + "";
console.log(converted_number);
// 5
console.log(typeof converted_number);
// string      

4.字元串轉數字

我們隻需要​

​+​

​運算符。

請注意這點,因為它僅适用于“字元串數字”。

the_string = "123";
console.log(+the_string);
// 123

the_string = "hello";
console.log(+the_string);      

5.打亂數組元素

每天我都像喝大了~

var my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(my_list.sort(function() {
    return Math.random() - 0.5
}));
// [4, 8, 2, 9, 1, 3, 6, 5, 7]      

6.碾平多元數組

很簡單,使用​

​Spread​

​運算符。

var entries = [1, [2, 5], [6, 7], 9];
var flat_entries = [].concat(...entries); 
// [1, 2, 5, 6, 7, 9]      
準确來說,所謂的多元數組針對二位數組有效!(譯者加)

7.短路條件

我們以下面為例子:

if (available) {
    addToCart();
}      

通過簡單地使用變量和函數來縮短它:

available && addToCart()      

8.動态屬性名

我一直以為我必須先聲明一個對象,然後才能配置設定動态屬性。😢

const dynamic = 'flavour';
var item = {
    name: 'Coke',
    [dynamic]: 'Cherry'
}
console.log(item);
// { name: "Coke", flavour: "Cherry" }      

9.使用長度調整/清空數組

我們基本上重寫了數組的長度。

var entries = [1, 2, 3, 4, 5, 6, 7];  
console.log(entries.length); 
// 7
entries.length = 4;  
console.log(entries.length); 
// 4
console.log(entries); 
// [1, 2, 3, 4]      
var entries = [1, 2, 3, 4, 5, 6, 7]; 
console.log(entries.length); 
// 7
entries.length = 0;   
console.log(entries.length); 
// 0
console.log(entries); 
// []      

繼續閱讀