快速查看数组活对象
const ta = [1,3,4,5,6,7]
const tb =['a','b','c', ta]
console.table(tb)
打印效果如下:
拓展: console.table的第二个参数是一个数组,标识要显示哪些列(是列不是行),如果是普通数组相当于只有一个value列, 如果是对象的数组,那么列名就是各个key值
JSON.stringify()方法骚操作
// 自定义 json 字符串化的内容.
// JSON.stringify调用的是对象的toJSON方法,然后在字符串化,这样就实现了自定义的效果
const superhero= {
firstName: "San Shang",
lastName: "You Ya",
age: 21,
toJSON() {
return {
fullName: `${this.firstName} + ${this.lastName}`
};
}
};
console.log(JSON.stringify(superhero));
// 过滤字符串化的key, JSON.stringify接收第二个参数
const obj = {a:5, b: 6, c: 7}
console.log(JSON.stringify(obj, ['a', 'b'])) // {"a":5,"b":6}
switch 语句
如果switch 的条件符合了某个分支,且这个分支没有加break关键字,那么语句灰继续执行剩下的分支,而无需再判断分支条件,知道遇到break或switch结束。
二进制,八进制,十六进制之间快速转换
2 -》8
从右向左对齐数据,每三位作为一个八进制数(不足三位的向左补0),最后拼到一起就转换完成
8 -》 2
把八进制的每个数都拆成三位的二进制数,(拆不成三位的用0向左补齐三位),然后拼起来就是二进制数
十六进制和二进制的转换原理同上,不过十六进制的一位数对应二进制的4位数
快速求素数
// 获取n内的所有素数(素数:只能被1和本身整除的数,0 1不算)
function getPrime(n) {
if (n<2) { return [] }
if (n < 5) { return [2, 3] }
const primes = Array.from({length: n+1}).fill(1)
const res = [2,3]
for (let i=2; i * i <= n;i++) {
if (primes[i]) {
for (j=i*2;j<n;j++) { // j从i*2开始的含义:因为i是质数,没到i的两倍及以上是不可能整除i的
if (!primes[j]) continue
if (j % i === 0) {
primes[j] = 0
}
}
}
}
for (let i=5;i<n;i++) { primes[i] && res.push(i) }
return res
}