【数组(二)】

一、数组的常用方法(内置方法:直接使用,只需按要求传递对应的参数)

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地狱三头猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值