字符串
ansii 码与字符互转
'a'.charCodeAt()
String.fromCharCode(97)
补充头部
整型转为 32 位二进制表示:
console.log((123).toString(2).padStart(32, '0'))
数值
整数范围
数值最大范围:
console.log(Number.MAX_VALUE) // 1.7976931348623157e+308
console.log(Number.MIN_VALUE) // 5e-324
能表示的整数范围
console.log(Number.MAX_SAFE_INTEGER) // 9007199254740991
console.log(Number.MIN_SAFE_INTEGER) // -9007199254740991
数组遍历、对象
forEach 不适合用于算法刷题,无法使用 break 、 continue 、 return 中断循环。
优先还是使用常规的 for 来进行遍历,因为可以控制 i 从哪里开始遍历。
如果为了方便且确定全量遍历的,可使用 for i in arr
语法遍历索引, for v of arr
遍历值。
对象只能使用 for k in obj
语法遍历索引,不能使用 for of 语法。
Set 和 Map
Set 和 Map 在工程项目中不常用,但算法刷题中常常用到。
集合 Set
一种无序且唯一的数据结构
const set = new Set();
set.add(1);
set.add(2);
if (set.has(1)) {
set.delete(1);
}
console.log(set.size);
创建为数组、数组去重:
const arr = [...set]; // Array.from(set)
可使用 for (let val of set)
遍历值;
Map
js 中,优先使用 Map 而不是 Object:
- 它可以存放任意类型的 key 值,在频繁增删键值对的场景下表现更好。
- 在 LeetCode 中,Map 性能比 object 更好。
- 它的 key 值顺序为首次插入的顺序,但是 object 不一定保持这个顺序,有时是字典序
var map = new Map();
map.set(1, 0);
map.set(2, 1);
if (map.has(2)) {
map.delete(2);
}
console.log(map.get(2));
console.log(map.size);
初始化时赋值:
let first = new Map([
[1, "one"],
[2, "two"],
[3, "three"],
]);
可使用 for (let [k, v] of map)
遍历键、值;可以理解为它内部是类似存了键值对的二维数组。