js刷题小结

1.数据结构

1.1数组

1.1.1数组排序 
//arr是一个数组
arr.sort(function(a,b){
    return a-b        //返回从小到大的数组
})

顺序

方法名功能返回值是否改变原数组
1push()(在结尾)向数组添加一或多个元素返回新数组长度Y
2unshift()(在开头)向数组添加一或多个元素返回新数组长度Y
3pop()删除数组的最后一位返回被删除的数据Y
4shift()移除数组的第一项返回被删除的数据Y
5reverse() 反转数组中的元素返回反转后数组Y
6sort()以字母顺序(字符串Unicode码点)对数组进行排序返回新数组Y
7splice()在指定位置删除指定个数元素再增加任意个数元素 (实现数组任意位置的增删改)返回删除的数据所组成的数组Y
8concat()通过合并(连接)现有数组来创建一个新数组返回合并之后的数组N
9join()用特定的字符,将数组拼接形成字符串 (默认",")返回拼接后的字符串N
10slice()裁切指定位置的数组被裁切的元素形成的数组N
11toString()将数组转换为字符串字符串N
12valueOf()查询数组原始值数组的原始值N
13indexOf()查询某个元素在数组中第一次出现的位置存在该元素,返回下标,不存在 返回 -1N
14lastIndexOf()反向查询数组某个元素在数组中第一次出现的位置存在该元素,返回下标,不存在 返回 -1N
15forEach()(迭代) 遍历数组,每次循环中执行传入的回调函数无/(undefined)N
16map()(迭代) 遍历数组, 每次循环时执行传入的回调函数,根据回调函数的返回值,生成一个新的数组有/自定义N
17filter()(迭代) 遍历数组, 每次循环时执行传入的回调函数,回调函数返回一个条件,把满足条件的元素筛选出来放到新数组中满足条件的元素组成的新数组N
18every()(迭代) 判断数组中所有的元素是否满足某个条件全都满足返回true 只要有一个不满足 返回false N
19some()(迭代) 判断数组中是否存在,满足某个条件的元素只要有一个元素满足条件就返回true,都不满足返回falseN
20reduce()   (归并)遍历数组, 每次循环时执行传入的回调函数,回调函数会返回一个值,将该值作为初始值prev,传入到下一次函数中最终操作的结果N
21reduceRight()(归并)用法同reduce,只不过是从右向左同reduceN
22includes()判断一个数组是否包含一个指定的值是返回 true,否则falseN
23Array.from()接收伪数组,返回对应的真数组对应的真数组N
24find()遍历数组,执行回调函数,回调函数执行一个条件,返回满足条件的第一个元素,不存在返回undefined满足条件第一个元素/否则返回undefinedN
25 findIndex()遍历数组,执行回调函数,回调函数接受一个条件,返回满足条件的第一个元素下标,不存在返回-1满足条件第一个元素下标,不存在=>-1N
26fill()用给定值填充一个数组新数组Y

1.2Map

let m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
//Map的使用
let m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined

1.3Set

let s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}
s.delete(3);
s  // Set {1, 2, "3"}

 1.4链表

生成一个链表

function listNode(val, next) {
	this.val = val
	this.next = next
}
let head=null,back=null
if(!back){
    back=new ListNode(5)
    head=back
}else{
    back.next=new ListNode(5)
}
back=back.next

1.5二叉树

 获取二叉树高度

var maxDepth = function(root) {
    if (!root) { return 0 }
    return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1
};

1.6优先队列

 

2. for...of...的使用

遍历Array可以采用下标循环,遍历MapSet就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型

let a = ['A', 'B', 'C'];
let s = new Set(['A', 'B', 'C']);
let m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (let x of a) { // 遍历Array
    console.log(x);
}
for (let x of s) { // 遍历Set
    console.log(x);
}
for (let x of m) { // 遍历Map
    console.log(x[0] + '=' + x[1]);
}

for...of..和for...in...的区别

for ... in循环将把name包括在内,但Arraylength属性却不包括在内

let a = ['A', 'B', 'C'];
a.name = 'Hello';
for (let x in a) {
    console.log(x); // '0', '1', '2', 'name'
}
let a = ['A', 'B', 'C'];
a.name = 'Hello';
for (let x of a) {
    console.log(x); // 'A', 'B', 'C'
}

3. 取整

向下取整

ans.floor()

向上取整

ans.ceil()

四舍五入

ans.round()

4. 创建二维及多维数组

注意:要用fill填充值

let arr=new Array(n).fill(0).map(()=>new Array(n).fill(0))

5. 获取ACSII码值

s.charCodeAt()

6. 切割字符串

s.substring(3,5)        //切割下标 [3,5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明里灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值