isNaN
let a = 'aaC'
console.log(isNaN(a));// true
用来判断 是否 不是一个Number类型
BigInt
var addStrings = function (num1, num2) { return String(BigInt(num1) + BigInt(num2)) };
用来解决整数溢出的问题,小整形用Number,大整形用BigInt。
以下是一个极端的例子:
假设 num1 为 9007199254740991,num2 为 9007199254740991。
如果使用普通的加法运算 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 二进制转化为十进制
双指针
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 强制提交
问题描述:
> 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