01

70 阅读2分钟

isNaN

let a = 'aaC' 
console.log(isNaN(a));// true

用来判断 是否 不是一个Number类型

BigInt

var addStrings = function (num1, num2) { return String(BigInt(num1) + BigInt(num2)) };

用来解决整数溢出的问题,小整形用Number,大整形用BigInt。

以下是一个极端的例子:

假设 num19007199254740991num29007199254740991

如果使用普通的加法运算 Number(num1) + Number(num2) ,结果会是 18014398509481982 ,但这是错误的,因为超出了 Number 类型所能准确表示的范围。

而使用 var addStrings = function (num1, num2) { return String(BigInt(num1) + BigInt(num2)) }; ,可以得到正确的结果 180143985094819820

substring

let a = 'abcdefghijklmnopqrstuvwxyz' 
console.log(a.substring(0,3));// abc 不包括右边的下标 
console.log(a.substring(1));// bcdefghijklmnopqrstuvwxyz 直接到底

截取字符串

递归

var tribonacci = function(n) { 
    if (n === 0) return 0 
    if (n === 1) return 1 
    if (n === 2) return 1 
    return tribonacci(n - 3) + tribonacci(n - 2) + tribonacci(n - 1) 
};

计算一个二进制数中1的个数

var hammingWeight = function (n) { 
    let res = 0 
    while (n) { 
        // n & (n - 1) 利用位运算,清零最低位置的1 
        n = n & (n - 1) 
        res++ 
    } 
    return res 
};

十进制和二进制之间的转化

let num10 = 100 
console.log(num10.toString(2)); //1100100 十进制转化为二进制 

let num2 = 1100100 
console.log(parseInt(num2, 2)); //100 二进制转化为十进制

双指针

image.png

var getCommon = function (nums1, nums2) {
    for (let i = 0, j = 0; i < nums1.length && j < nums2.length;) {
        if (nums1[i] === nums2[j]) return nums1[i]
        nums1[i] > nums2[j] ? j++ : i++
    }
    return -1
};

slice

let str = 'abcd'
str = str.slice(0, 1) + str.slice(2)
console.log(str);// acd
/**
 * 从0开始截取到1,不包括1。
 * 从索引2开始截取到最后。
 */

let str = 'abcde'
console.log(str.slice(-2)) //de
console.log(str) // abcde
注意,slice传递一个负数,是从后面开始删除,且依旧不会影响原数组

根据长度生成数组

let length = 5
let arr = Array(length).fill('')
console.log(arr); // [ '', '', '', '', '' ]

利用这个来模拟循环多个子元素

<div class="box" v-for="(item,index) in Array(500).fill('')" :key="index"> 
    <div class="title">《三国演义》</div> 
    <div class="author">罗贯中</div> 
</div>

git commit 强制提交

image.png 问题描述:

> running pre-commit hook: lint-staged
Stashing changes... [started]
Stashing changes... [completed]
Running tasks... [started]
Running tasks for *.{js,jsx,vue} [started]
vue-cli-service lint [started]

解决方式: git commit -m "问题描述" --no-verify