每天學習10個實用Javascript代碼片段,加深對 Javascript 文法的了解,積累代碼優化經驗,第三天繼續,如果覺得内容能夠帶來點幫助,可以檢視專欄《碎片時間學習Javascript代碼》其他内容,又或者有用到的需求片段,不妨在留言區留言。
1. isCheck
此代碼片段用于檢查值是否屬于某個資料類型。
const isCheck = (type, val) =>
![undefined, null].includes(val) && val.constructor === type;
console.log(isCheck(Array, ["a"])); // true
console.log(isCheck(Object, {})); // true
console.log(isCheck(ArrayBuffer, new ArrayBuffer())); // true
console.log(isCheck(Boolean, new Boolean(true))); // true
console.log(isCheck(RegExp, /./g)); // true
console.log(isCheck(Number, 0)); // true
2. indexOfAll
此代碼片段用于查找數組中包含元素的所有索引值,傳回索引值組成的數組,沒有則傳回空數組。
const indexOfAll = (array, val) =>
array.reduce(
(acc, current, index) => (current === val ? [...acc, index] : acc),
[]
);
const testArray = ["devpoint", "devtest", "javascript", "devtest"];
console.log(indexOfAll(testArray, "devtest")); // [ 1, 3 ]
3. redirectHttps
此代碼片段從前端強制跳轉到 https,當然實際上一般在伺服器端強制跳轉。
const redirectHttps = () => {
location.protocol !== "https:" &&
location.replace("https://" + location.href.split("//")[1]);
};
4. isBrowser
此代碼片段用于檢測目前運作環境是否為浏覽器環境,以避免在
Node
環境上運作前端子產品時出錯。
const isBrowser = () => ![typeof window, typeof document].includes("undefined");
console.log(isBrowser()); // false
5. isNil
此代碼片段用于檢查資料是否為
null
或是
undefined
。
const isNil = (val) => val === undefined || val === null;
const testObj = {
title: "devpoint",
};
console.log(isNil(null)); // true
console.log(isNil(undefined)); // true
console.log(isNil(testObj.age)); // true
6. isNumber
此代碼片段用于檢查資料是否為數字。
const isNumber = (num) => {
return !isNaN(parseFloat(num)) && isFinite(num);
};
const testObj = {
title: "devpoint",
};
console.log(isNumber(testObj.age)); // false
console.log(isNumber("1a")); // false
console.log(isNumber(1)); // true
7. isValidJSON
此代碼片段用于檢查字元串是否為有效的 JSON 字元串,對于需要處理JSON資料的需求來說這個驗證很有必要。
const isValidJSON = (str) => {
try {
JSON.parse(str);
return true;
} catch (e) {
return false;
}
};
console.log(isValidJSON('{"name":"devpoint","age":30}')); // true
console.log(isValidJSON(null)); // true
8. minArray
const minArray = (array, n = 1) => [...array].sort((a, b) => a - b).slice(0, n);
const testArray = [10, 2, 3, 30, 9];
console.log(minArray(testArray)); // [2]
console.log(minArray(testArray, 2)); // [ 2, 3 ]
console.log(minArray(testArray, 3)); // [ 2, 3, 9 ]
9. maxArray
const maxArray = (array, n = 1) => [...array].sort((a, b) => b - a).slice(0, n);
const testArray = [10, 2, 3, 30, 9];
console.log(maxArray(testArray)); // [ 30 ]
console.log(maxArray(testArray, 2)); // [ 30, 10 ]
console.log(maxArray(testArray, 3)); // [ 30, 10, 9 ]
10. adornFilter
const adornFilter = (fn) => (...args) => fn(...args);
const testArray = [1, 22, 31, 49, 56, 86];
console.log(testArray.filter(adornFilter((item) => item % 2 === 0))); // [22, 56, 86];
console.log(testArray.filter(adornFilter((item) => item > 40))); // [ 49, 56, 86 ]