一、数组的常用方法(内置方法:直接使用,只需按要求传递对应的参数)
1、join(连接字符):作用是将数组中的元素通过给定的连接字符连成一个字符串
var a = [1,3,5,7,9]
var temp = a.join('~')
console.log(temp)//1~3~5~7~9
2、push(值/变量):从数组的末尾向数组添加元素
var arr = [11,13,99,36,47,58,20,41]
arr.push(32,42)
console.log(arr)//[11, 13, 99, 36, 47, 58, 20, 41, 32, 42]
3、pop():从数组的末尾删除元素,一次只删除一个,返回的是被删除的元素。无需传参
arr.pop()
console.log(arr)//[11, 13, 99, 36, 47, 58, 20, 41, 32]
4、unshift(值/变量):从数组的首部插入元素
arr.unshift(12,15)
console.log(arr)//[12, 15, 11, 13, 99, 36, 47, 58, 20, 41, 32]
5、shift():从数组的首部删除元素
arr.shift()
console.log(arr)//[15, 11, 13, 99, 36, 47, 58, 20, 41, 32]
6、sort():排序函数。默认的是从小到大。若需要降序排序,需要自己写比较函数。它是在原数组上排序,根据ASCII码值排列,所以个位数与十位数混合排序会出错
arr.sort()
console.log(arr)//[11, 13, 15, 20, 32, 36, 41, 47, 58, 99]
7、reverse():将数组元素颠倒顺序
arr.reverse()
=console.log(arr)//[99, 58, 47, 41, 36, 32, 20, 15, 13, 11]
8、concat():连接两个或多个数组
var b = arr.concat(a)
console.log(b)//[99, 58, 47, 41, 36, 32, 20, 15, 13, 11, 1, 3, 5, 7, 9]
9、slice():切片函数:从原数组中截取部分元素组成新的数组。在截取时需要指定开始位置(开始下标)和结束位置(结束下标)
var a1 = arr.slice(1) //'1'是下标,表示从下标为1的位置开始到数组末尾全部截取
var a2 = arr.slice(1,3)//切片,显示从下标为1的位置到3之间的元素,左闭右开[1,3)
console.log(a2)//[58, 47]
var a3 = arr.slice(1,-2) //等价于slice(1,3),-2不是下标,表示倒数第二个元素
console.log(a3)//[12, 13]
10、splice():可以实现对数组元素的插入、删除和替换
(1)删除元素:
splice(参数1,参数2):返回的删除的元素。第一个参数代表下标,第二个参数表示删除的项数。
var a4 = arr.splice(1,3) //删除从下标1开始的连续3个元素
console.log(arr)//[99, 36, 32, 20, 15, 13, 11]
(2)替换/插入元素:
splice(参数1,参数2,参数3):参数3为插入或替换的新值
arr.splice(1,0,12)//从下标为1开始的元素删除0项后,再添加元素(插入)
console.log(arr)//[99, 12, 36, 32, 20, 15, 13, 11]
arr.splice(2,1,14)//从下标为1开始的元素删除1项后,再添加元素(替换)
console.log(arr)//[99, 12, 14, 32, 20, 15, 13, 11]
11、indexOf(元素):从左向右查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到
var a = arr.indexOf(14)
console.log(a)//2
12、lastIndexOf(元素):从右向左查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到
var b = arr.lastIndexOf(15)
console.log(b)//5
13、filter(function(value,index) {
函数体语句
})
可以实现对数组元素的"过滤",返回的元素构成一个新的数组
例:
var temp = arr.filter(function(value,index){
return value > 20;
})
console.log(temp)//[99, 32]
14、fill(值/变量):用给定的值或变量填充数组
例:
arr.fill(2)
console.log(arr)//[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
15、every(function(value) {
return 条件表达式
})
判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回 true
例:
var flag = arr.every(function(value){
return value >= 11;
})
console.log(flag)//true
16、includes() :判断一个数组中是否包含一个指定的值
var flag = arr.includes(14)
console.log(flag)//true
二、二维数组
1、一维数组:数组元素只有一个下标(通过一个下标就可以定位数组中的元素)
2、二维数组:数组中的每个元素都有两个下标(由行和列组成的数组)
(1)定义:
a、通过字面量:[ ]
var arr = [[1,2,3],
[4,5,6],
[7,8,9]]
b、使用Array对象
var arr = new Array(
new Array(1,2,3),
new Array(4,5,6),
new Array(7,8,9)
)
(2)二维数组元素的访问:
数组名[ i ][ j ],一般情况i表示行下标,j表示列下标
(3)输出:采用循环嵌套
var str = ''
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr[i].length;j++){
str += arr[i][j] + '\t'
}
str += '\n'
}
console.log(str)
三、课后练习
1、定义一个二维数组,输出该二维数组的最大值
//定义一个二维数组,输出该二维数组的最大值
var arr = [[1,2,3],[4,5,6],[7,8,9]]
var str = ''
for(let i = 0;i < arr.length;i++){
for (let j = 0; j < arr[i].length; j++) {
str += arr[i][j] + '\t'
}
str += '\n'
}
console.log(str)
2、定义一个二维数组,输出该二维数组的每行元素的最大值
//定义一个数组,打印每行的最大值
var arr = [[11,65,57],[44,25,68],[29,78,99]]
for (let i = 0; i < arr.length; i++) {
let max = arr[i][0]
for (let j = 1; j < arr[i].length; j++) {
if(max < arr[i][j]){
max = arr[i][j]
}
}
console.log(`第${i + 1}行的最大值为:${max}`)
}
3、定义一个3*3二维数组,输出该数组每行元素之和、对角线元素之和
//定义一个3*3二维数组,输出该数组每行元素之和
var arr = [[16,58,46],[54,31,72],[44,38,71]]
for (let i = 0; i < arr.length; i++) {
let sum = 0;
for (let j = 0; j < arr.length; j++) {
sum += arr[i][j]
}
console.log(`第${i + 1}行元素之和为:${sum}`)
}
//与对角线元素之和
var arr = [[16,58,46],[54,31,72],[44,38,71]]
var s1 = 0;//第一条对角线之和,左上到右下
var s2 = 0;//第二条对角线之和,左下到右上
for (let i = 0; i < arr.length; i++) {
s1 += arr[i][i]
s2 += arr[i][arr.length - 1 - i]
}
console.log(`对角线元素之和为:${s1 + s2}`)
4、计算斐波拉契数列的前20项之和
斐波拉契数列:1 1 2 3 5 8 13 21 34......
//计算斐波拉契数列的前20项之和 1 1 2 3 5 8 13 21 34
var f1 = 1;//第1个值1
var f2 = 1;//第2个值1
let sum = f1 + f2;//求和,初始值为前两个之和
for (let i = 3; i <= 20; i++) {//前20项减去前两个,i从3开始
let fi = f1 + f2;//第i项为前两项之和,初始为第3项
f1 = f2;//f1往后挪一位
f2 = fi;//f2往后挪一位
sum += fi;//求和
}
console.log(sum)