js数组详解(四):排序API 1. 排序:
⾃定义排序: 冒泡
排序API: arr.sort();
⼤问题: 默认将所有元素转为字符串再按字符串排列
只能对字符串类型的元素正确排序
解决: ⾃定义⽐较规则:
⽐较器函数: 专门⽐较任意两值⼤⼩的函数:
要求: 两个参数: a,b
返回值: 如果a>b,就返回正数
如果a<b,就返回负数
如果a=b,就返回0
最简单的数字⽐较器函数:
function compare(a,b){return a-b;}
如何使⽤: 将⽐较器函数名作为参数传⼊sort函数中sort函数 js
arr.sort(compare) //强调: 不要加()
compare函数作为参数传⼊sort中,被sort反复调⽤
降序: 颠倒⽐较器函数的正负号,可改升序为降序
最简单的数字降序⽐较器函数:
function compare(a,b){return b-a;}
2. 栈和队列: js中没有专门的栈和队列类型
⼀切栈和队列都是⽤普通数组模拟的
栈: ⼀端封闭,只能从另⼀端进出的数组
特点: FILO
何时: 今后只要希望始终使⽤最新的元素时
如何:
1. 从结尾出⼊栈:
⼊: arr.push(值) => arr[arr.length]=值
出: var last=arr.pop()
特点: 每次出⼊栈,都不影响其他元素的位置
2. 从开头出⼊栈:
⼊: arr.unshift(值)
出: var first=arr.shift()
特点: 每次出⼊栈,其它元素位置都会依次顺移
队列: 只能从⼀端进⼊,从另⼀端出的数组
特点: FIFO
何时: 只要希望按先后顺序使⽤数组中的元素时
1. 结尾⼊: ⼊: arr.push(值)
2. 开头出: var first=arr.shift()
3. ⼆维数组:
什么是: 数组中的元素⼜引⽤了另⼀个⼦数组
何时: 1. 保存横⾏竖列的⼆维数据结构
2. 对⼀组数据,再进⾏细致分类时
如何:
创建: 2种:
1. 创建数组时,还不知道⼦数组的内容:
var arr=[];
arr[0]=[值1,值2,...];
arr[1]=[值1,值2,...];
2. 创建数组同时初始化元素:
var arr=[
[值1,值2,...],
[值1,值2,...],
...
]
访问: arr[r][c]->⽤法和普通数组元素的⽤法完全⼀样
强调: ⼆维数组,⾏下标r不能越界!——报错!
遍历: 外层循环控制⾏,内层循环控制列
for(var r=0; r<arr.length; r++){//遍历每⼀⾏
for(var c=0;c<arr[r].length;c++){//遍历第r⾏中每⼀列 arr[r][c]//当前元素
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论