JavaScript Array sort() 方法 (数组常用)
数组常用方法
push() 结尾插入
unshift() 头部插入
pop() 删除尾部
splice(index,n,value) index-> 数组的位置 可以为负数(从数组结尾开始数) n-> 删除几个元素 value -> 添加的元素
filter 对数组中的每一项运行给定函数,返回该函数会返回 true的项组成的数组(可用于返回某数组中所有满足某个条件的值)
Map
按字母排序
const a = [a,d,b,e,c]
a.sort()
排序时特殊例子
['Micsoft','Null','apple'].sort()
// 输出顺序为 apple 在最后 因为 sort 方法是按ASCII码进行比较的
[10,20,1,2].sort()
// 输出的顺序为 1,10,2,20 sort将数字转化为字符串在进行比较
升序和降序都不能直接使用 sort() 不然会在数组中有负数时出错
升序排列(数字)
const a = [1,3,-3,-1,6,4,2]
a.sort((a,b) => a-b )
降序排列(数字)
const a = [1,3,-3,-1,6,4,2]
a.sort((a,b) => b-a )
逆序
const a = [1,3,-3,-1,6,4,2]
a.reverse()
数组合并
const a = [1,3,-3,-1,6,4,2]
const b = [9,7,-4,-8]
const c = a.concat(b)
拓补排序(有向无环图)
看到题中有依赖关系时 -> 拓扑排序
拓扑排序问题步骤
- 根据依赖关系,构建邻接表、入度数组。
- 选取入度为 0 的数据,根据邻接表,减小依赖它的数据的入度。
- 找出入度变为 0 的数据,重复第 2 步。
- 直至所有数据的入度为 0,得到排序,如果还有数据的入度不为 0,说明图中存在环
二分法 (缩小查找范围)
一般定义三个变量
const left = 0
const right = "数组或链表长度"
const n = Math.floor(left + (right-left)/2)
while (left < right) {
// 判断 直至 left == right
}