天天看點

每天學習10個實用Javascript代碼片段(三)

每天學習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 ]      

繼續閱讀