文章目录
- 二维数组
- 二维数组的创建与访问
- 数组方法
- 位移元素
- 数组排序
二维数组
二维数组是内部元素为数组的数组,二维数组常用于当数据有一定的数据逻辑时,比如表示矩阵或者创建表格的时候。
二维数组的创建与访问
- 创建
二维数组的创建与普通数组的创建并没有太大区别,只不过是将内部的元素替换成中括号包括的另一个未命名数组。或者将已创建好的数组赋值给二维数组。
示例:
var fruits = [["1", "Banana"], ["2", "Orange"]];
var element = ["3", "Apple"];
fruits[2] = element;
- 访问
二维数组的访问方式也和普通数组没有太大区别,但是需要注意如果只输入一个下标的话访问的只会是二维数组中存的数组,需要用两个下标来访问二维数组中某数组的具体元素。
示例:
fruits[0] // ["1", "Banana"]
fruits[0][1] // "Banana"
- 遍历
二维数组的遍历需要使用双重循环来实现,一层循环用于遍历二维数组中储存的数组,一层循环用于遍历二维数组中所存数组的具体元素。
示例:
for(var i in fruits){
for(var j in fruits[i]){
console.log(fruits[i][j]);
}
}
- 添加
二维数组同样可以使用数组中提供的各种方法,比如pop()和push()等方法(具体使用方法见上期)
示例:
var arr = [["1","Banana"],["2","Orange"]]
var element = ["3","Apple"]
arr.push(element)
数组方法
JS数组真正的力量隐藏在数组方法之中。这里主要介绍元素位移和数组排序两种。
位移元素
- shift()
删除首个数组元素并返回被删除的元素,同时把所有其他元素“位移”到更低的索引
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.shift();
//fruits的值是[“Orange”, “Apple” , “Mango”]; x的值是"Banana"
- unshift()
向数组的开头添加一个或更多元素并返回新的长度,同时把所有其他元素“位移”到更高的索引
示例:
var fruits = ["Orange", "Apple", "Mango"];
var x = fruits.unshift("Banana");
//fruits的值是[“Banana”, “Orange”, “Apple” , “Mango”]; x的值是4
数组排序
JS的数组排序方法有很多种,除了使用系统自带的排序方法之外,还可以用户自己定义排序规则。
- reverse()
点到数组中元素的顺序,并返回数组。
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.reverse();
//x和fruits的值均为[“Mango”, “Apple”, “Orange”, “Banana”]
- sort() 对数组的元素进行排序,并返回数组
示例:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.sort();
//x和fruits的值均为[“Apple”, “Banana”, “Mango” , “Orange”]
sort()排序的规则如下:
对字符串排序,从左至右逐字比较(ASCII码顺序)
如[“a”, “A”, “1”], 按ASCII码顺序排列后为[“1”, “A”, “a”]。(数字>大写字母>小写字母)
如[“ab”, “ac”, “abc”], 排序后为[“ab”, “abc”, “ac”]。
(第一位相同比较第二位,b>c,因此ab和abc在ac之前;再比较ab与abc, ab没有第三位,因此排在abc之前)
对字符串形式的数字,排序规则不变,如[“10”, “5”, “18” , “50”], 排序后为[“10”, “18”, “5”, “50”]
如需要对字符串形式的数字进行排序,采用以下两种方式
统一格式,补足位数,如[“10”, “5”, “18” , “50”]中, 将“5”写为“05”
转换为数字,使用特殊方法对数字排序
- 自定义排序(数字)
自定义函数定义排序方法,在使用的时候嵌套进sort()中,该比较函数的名字可为任意,也可直接在sort()内写匿名函数作为参数
示例:
function sortby(a, b) {
return a - b //升序
}
var arr = [10,5,8,50];
arr.sort(sortby) //[5,8,10,50]
function sortby(a, b) {
return b - a //降序
}
var arr = [10,5,8,50];
arr.sort(sortby) //[50,10,8,5]
arr.sort(function (a, b) {
return a - b
})
- 自定义排序(多维数组)
需要对多维数组中的值进行排序时,可借助比较函数sortby,根据比较函数的返回值为正或为负决定排列顺序。
示例:
var arr = [["Alice", "95"], ["Bob", "80"], ["Cart", "100"]];
function sortby(a,b){
return a[1]-b[1]
}
arr.sort(sortby)