一、数组的常用方法(内置方法:直接使用,只需按要求传递对应的参数)
1、join(连接字符):作用是将数组中的元素通过给定的连接字符连成一个字符串
2、push(值/变量):从数组的末尾向数组添加元素
3、pop():从数组的末尾删除元素,一次只删除一个,返回的是被删除的元素。无需传参
4、shift():从数组的首部删除元素
5、unshift(值/变量):从数组的首部插入元素
6、sort():排序函数。默认的是从小到大。若需要降序排序,需要自己写比较函数。它是在原数组上排序
数字:0 1 2 ...... 9
数字字符:'0','1'.....'9'
'0'的ASCII码值是48
' ' --- 32
'a' --- 97
'A' --- 65
7、reverse():将数组元素颠倒顺序
8、concat():连接两个或多个数组
9、slice():切片函数:从原数组中截取部分元素组成新的数组。在截取时需要指定开始位置(开始下标)和结束位置(结束下标)
10、splice():可以实现对数组元素的插入、删除和替换
(1)删除元素:
```javascript
var arr = [1,3,5,7,9,11]
// var a1 = arr.slice(1) //'1'是下标,表示从下标为1的位置开始到数组末尾全部截取
// console.log(a1)
// var a2 = arr.slice(1,3) //截取下标1~3之间的元素,包含下标为1的元素,不包含下标为3的元素
// console.log(a2)
// var a3 = arr.slice(1,-2) //等价于slice(1,3),-2不是下标,表示倒数第二个元素
// console.log(a3)
// var a4 = arr.slice(-4,-2) //截取倒数第四个元素~倒数倒数第二个元素之间的元素
// console.log(a4)
//splice(参数1,参数2):返回的删除的元素。第一个参数代表下标,第二个参数表示删除的项数。
var a5 = arr.splice(1,3) //删除从下标1开始的连续3个元素
console.log(a5)
console.log(arr) ```
(2)替换/插入元素:
splice(参数1,参数2,参数3):
参数1:表示替换位置
参数2:表示项数(非零为替换,0表示插入)
参数3:用于替换的新值
var arr = [1,3,5,7,9,11] arr.splice(1,1,89) //替换 arr.splice(1,0,78) //插入 console.log(arr)
11、indexOf(元素):从左向右查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到
```javascript
var arr = [10,25,33,11,89] var index1 = arr.indexOf(12) //从左往右查找,返回找到的第一个12的下标 console.log(index1) ```
12、lastIndexOf(元素):从右向左查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到
var arr = [12,25,33,12,89] var last_index = arr.lastIndexOf(12) console.log(last_index)
13、filter(function(value,index) {
函数体语句
})
可以实现对数组元素的"过滤",返回的元素构成一个新的数组
var arr = [1,2,3,4,5,6,7,8,9,10] var temp = arr.filter(function(value,index){ //value:表示数组元素,index:表示数组元素的下标 return index % 3==0 || value>=8 //返回下标对3取余等于的元素 }) console.log(temp)
14、fill(值/变量):用给定的值或变量填充数组
```javascript
var arr = new Array(5) arr.fill(1) //数组的5个单元中都是1 console.log(arr) ```
15、every(function(value) { // 判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回 true
return 条件表达式
})
var arr = [1,2,3,4,15,6,7,8,9,10] var flag = arr.every(function(value){ //参数value代表数组元素 return value <=10 //若数组中每个元素都小于等于10,则返回true,否则返回false }) console.log(flag)
16、includes() :判断一个数组中是否包含一个指定的值
var arr = [45,78,89,55,46,31] var flag = arr.includes(89) //判断arr数组中是否包含89,若有返回true,没有就返回false var flag1 = arr.includes(89,3)//从下标为3的元素开始查找,若有返回true,没有就返回false console.log(flag1)
二、二维数组
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)二维数组元素的访问:数组名 下标1 默认情况下'下标1'代表行下标,'下标2'代表列下标
(3)输出:采用循环嵌套
var str = '' for(let i=0;i<arr.length;i++){ //外循环:控制数组的行数。arr.length表示arr数组的行数.i表示行下标 for(let j=0;j<arr[i].length;j++){//内循环:控制数组的列。arr[i].length表示i行的元素个数。j表示列下标 str += arr[i][j] + '\t' } str += '\n' } console.log(str) |
练习1:定义一个二维数组,输出该二维数组的最大值
var arr = new Array(new Array(56,35,42), new Array(89,65,77), new Array(123,78,99) ) let max = arr[0][0] //假设二维数组的第一个元素是最大值 for(let i=0;i<arr.length;i++){ for(let j=0;j<arr[i].length;j++){ if(max < arr[i][j]){ max = arr[i][j] } } } console.log("Max=",max) |
练习2、计算斐波拉契数列的前20项之和
1 1 2 3 5 8 13 21 34......
var f1 = 1, f2 = 1 for(let i=3;i<=20;i++){ |