数学函数
Math.max(1,2)
2
Math.min(1,2)
1
Math.pow(2,3);
8
Math.floor(2.9)
2
Math.round(2.4)
2
Math.round(2.5)
3
Math.ceil(2.1)
3
(3 % 2) === 1
true
(2 % 2) === 0
true
位运算
(3 & 1) === 1
true
(2 & 1) === 0
true
~~1.2
1
~~-1.2
-1
9 << 1
18
9 >> 1
4
1 << 3
8
Math.pow(2,3);
8
二维数组(矩阵matrix)
let matrix = new Array(2).fill().map(() => new Array(4).fill(0));
console.info(matrix);
1. (2) [Array(4), Array(4)]
1. 1. 0: (4) [0, 0, 0, 0]
1. 1: (4) [0, 0, 0, 0]
1. length: 2
1. [[Prototype]]: Array(0)
matrix.length
2
matrix[0].length
4
for(let r of matrix) {
for(let c of r) {
console.info(c);
}
}
let c = matrix[0].length;
let i = ~~(6 / c);
let j = 6 - (i * c);
matrix[i][j] = 1;
console.info(matrix);
1. (2) [Array(4), Array(4)]
1. 1. 0: (4) [0, 0, 0, 0]
1. 1: (4) [0, 0, 1, 0]
1. length: 2
1. [[Prototype]]: Array(0)
slice 和 splice
let initArr = [1,2,3,4,5,6];
let sliceArr = initArr.slice(2, 5);
console.info(sliceArr);
(3) [3, 4, 5]
console.info(initArr);
(6) [1, 2, 3, 4, 5, 6]
let spliceArr = initArr.splice(2, 3);
console.info(spliceArr)
(3) [3, 4, 5]
console.info(initArr);
(3) [1, 2, 6]
substring 和 substr
let str = 'abcdefg';
str.substring(2, 5);
'cde'
str.substr(2, 3);
'cde'
console.info(er);
abcdefg
数组
const testArr = [1, [2, [3, 4, 5]]];
testArr.flat().flat()
[1, 2, 3, 4, 5]
const testArr1 = [[1, 2], [3, 4]];
testArr1.flat();
[1, 2, 3, 4]
对象
let map = {
"book": "19",
"computer": "4999"
}
console.log(Object.entries(map))
1. (2) [Array(2), Array(2)]
1. 1. 0: (2) ['book', '19']
1. 1: (2) ['computer', '4999']
1. length: 2
1. [[Prototype]]: Array(0)
Object.entries(map).map(([key, value] = [...item]) => console.log(`${key}: ${value}`))
book: 19
computer: 4999
console.log(Object.keys(map))
['book', 'computer']
console.log(Object.values(map))
['19', '4999']
Object Map Set 简单对比
| Object | Map | Set |
|---|
| 概念 | 对象 | 在Map中,每一对数据的格式都为键值对的形式。是为了快速搜索和查找数据而生的。Map 类似于对象 | Set 类似于数组,成员值唯一。 |
| 键(key)的类型 | 只能是字符串,数字或者 Symbol | 任何类型 | |
| 插入时的顺序 | 不会完全保持 | 保持其插入时的顺序 | |
| 读取长度 | Object.keys(obj).length | .size() | |
| 可迭代对象 | for in 来访问或 Object.keys(o)、Object.values(o)、Object.entries(o) 来取得表示键或值的数字 | for of 或 .forEach() 方法来迭代 | |
使用JSON 进行文件传输 | 支持 | 不支持,需要使用 .toJSON() 方法,然后在 JSON.parse() 中传入复原函数来将其复原。 | |
| 创建 | const obj = {}; // 对象字面量 | const map = new Map(); // 调用构造函数 | let set = new Set(); |
| 新增和修改 | obj.k = 1; 或 obj['k'] = 2; | map.set('k', 1); | set.add('b'); |
| 读取 | obj.k; 或 obj['k'] | map.get('k'); | |
| 删除 | delete obj.k; // 存在很多性能问题 | map.delete('k'); | set.delete('b'); |
| 判断对象内是否含有该值 | null | map.has('b'); | set.has('b'); |
Set使用场景
1. 数组去重 [...new Set(arr)]
2. 取并集 new Set([...set1, ...set2])
3. 取交集 new Set([...set1].filter(x => set2.has(x)))
4. 取差集 new Set([...set1].filter(x => !set2.has(x)))