二. 数组的常用方法及二维数组

1.数组的常用方法

1.join(连接字符):将数组元素转换成字符串

问题:将字符串转换成数组,如:‘11-22-33-44-55’

var arr=[11,22,33,44,55]
var s1=arr.join('-')  //数组元素之间用'-'连接
var s2=arr.join()//默认情况(不带参数),元素之间用','连接
console.log(s1)
console.log(s2)

2.push()函数和pop()函数

push()函数在数组的末尾添加一个或多个元素

pop()函数:从数组的末尾删除一个元素,函数返回被删除的元素,无需传参

var arr ["Lily","lucy","Tom"];
var count = arr.push("Jack","sean");
console.log(count);//5
console.log(arr);/["Lily","lucy","Tom","Jack","Sean"]
var item = arr.pop();
console.log(item);//sean
console.log(arr);//["Lily","lucy","Tom","Jack"]

3.shift()函数和unshift()函数

shift()函数:从数组的首部删除一个元素,函数返回被删除的元素

unshift()函数:在数组的首部插入一个或多个元素

var arr = ["Lily","lucy","Tom"];
var count = arr.unshift("Jack","Sean");
console.log(count);//5
console.log(arr);//["Jack","sean","Lily","lucy","Tom"]
var item = arr.shift("Jack");
console.log(item);//Jack
console.log(arr);/["sean","Lily","lucy","Tom"]

4.sort():排序函数。默认的是从小到大。若需要降序排序,需要自己写比较函数。它是在原数组上排

var arr1 = ["a","d","c","b"];
console.log(arr1.sort());//["a","b","c","d"]
var arr2= [13,24,51,3];
console.log(arr2.sort());//[13,24,3,51]
console.log(arr2);//[13,24,3,51](原数组未改变)

5.reverse()函数:将数组元素颠倒顺序

var arr=[13,24,51,3]:
console.log(arr.reverse());//[3,51,24,13]
conso1e,1og(arr);//[3,51,24,13](原数组改变)

6.concat()函数:连接两个或多个数组

var arr=[1,3,5,7]:
var arrcopy=arr.concat(9,[11,13]);
conso1e.1og(arrCopy);//[1,3,5,7,9,11,13]
conso1e,1og(arr);//[1,3,5,7](原数组未被修改)

7.slice()函数:切片函数。从原数组中截取部分元素组成新的数组。在截取时需要指定开始位置(开始下标)和结束位置结束下标)

(1)slice(索引):截取数组中从给定索引到末尾的所有元素

(2)slice(索引1,索引2):截取数组中索引1到索引2之间的元素(包含索引1,不包含索引2)

索引:可以为负数,若是负数表示从后向前找元素

var arr=[1,3,5,7,9]
var a1=arr.slice(1)//'1'是下标,表示从下标为1的位置开始到数组数末尾全部被截取
console.log(a1)       //3   5   7  9

var a2 = arr.slice(1,3)  //截取下标1~3之间的元素,包含下标为1的元素,不包含下标为3的元素
console.log(a2)       // 3   5

var a3= arr.slice(1,-2)//等价于s1ice(1,3),-2不是下标,表示倒数第二个元素
console.log(a3)       //  3   5

var a4 arr.slice(-4,-2) //截取倒数第四个元素~倒数倒数第二个元素之间的元素
console.log(a4)         // 3   5  

8.splice(): 很强大的数组方法,它有很多种用法,可以实现删除、插入和替换。

var arr=[1,3,5,7,9,11]
//sp1ice(参数1,参数2):返回的删除的元素。第一个参数代表下标,第二个参数表示删除的项数。
var a5=arr.splice(1,3)  //删除从下标1开始的连续3个元素
console.log(a5)   //  3   5   7
console.log(arr)  //  1   9   11

console.log(arr)

splice(参数1,参数2,参数3):

参数1:表示替换位置

参数2:表示项数(非0即为替换 ,0表示插入)

参数3:用于替换的新值

var arr=[1,3,5,7,9,11]
arr.splice(1,1,78)  //替换   1  78 5 7 9 11
arr.splice(1,0,78)  //插入   1  78  78  5 7 9 11
console.log(arr)

9.indexOf(元素):从左向右查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到

var arr=[12,25,33,12,89]
var index1 = arr.indexOf(12)/从左往右查找,返回找到的第一个12的下标
console.log(index1)   //0

10.lastIndexOf(元素):从右向左查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到

var arr=[12,25,33,89]
var last_index=arr.lastIndexOf(1)
console.log(last_index) //-1

11.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 //返回下标对3取余等于0的元素
    //return index % 3==0 || value>=8
}) 
console.log(temp)  //1 4 7 10
//console.log(temp)//1 4 7 8 9 10

12.fill(值/变量):用给定的值或变量填充数组

var arr = new Array(5)  //定义5个单元
arr .fill(1)     //数组的5个单元中都是1
console.log(arr) //1,1,1,1,1

let k = 10
var arr = new Array(5) 
arr .fill(k) 
console.log(arr)  //10,10,10,10,10

13.every(function(value){ //判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回    true return条件表达式

})

var arr = [1,2,3,4,5,6,7,8,9,10]
     var falg = arr.every(function(value){  //参数value代表数组元素
        return value <=10          //若数组中每一个元素都小于10,则返回true,否者返回false
     })
     console.log(flag)  //true    

14.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(flag) //true
console.log(flag1) //false

4. 二维数组

1、一维数组:通过一个下标就可以访问数组元素(数组元素只有一个下标)

2、二维数组:通过两个下标来确定一个数组元素(数组中的每个元素都有两个下标)由行和列组成的数组

3、定义方式:

(1)通过数组字面量'[ ]'定义:

let arr = [[1,2,3],[4,5,6],[7,8,9]]  //定义一个3行3列的二维数组
 console.log(arr)

输出:采用循环嵌套

//输出:采用循环嵌套
var str =''
let arr = [[1,2,3],[4,5,6],[7,8,9]]
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 =str +arr[i][j] +'\t'
    }
    str = str +'\n'
}
console.log(str)

 (2)通过Array定义

let arr = new Array(
                    new Array(1,2,3),
                    new Array(4,5,6),
                    new Array(7,8,9)
                   )

4、二维数组元素的访问

(1)按行优先 --- 默认方式   数组名[ 行下标 ] [ 列下标 ]

(2)按列优先    数组名[ 列下标 ] [ 行下标 ]

5.练习

练习1:定义一个二维数组,输出该二维数组的最大值

let arr = new Array(new Array(1,2,3),
                    new Array(4,5,6),
                    new Array(7,8,9)
                   )
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:定义一个二维数组,输出该二维数组的每行元素的最大值

var str = ''
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
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)
//求每行的最大值
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二维数组,输出该数组每行元素之和、对角线元素之和

let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
//输出该数组每行元素之和
for (let i = 0; i < arr.length; i++) {
    let sum =0;
    for (let j = 0; j < arr[i].length; j++) {
        sum+=arr[i][j]
    }
    console.log('第' + (i + 1) + '行的元素之和:', sum)
}
//输出该数组对角线元素之和
let s1 = 0  //左上-右下对角线
let s2 = 0  //左下-右上对角线
for (let i = 0; i < arr.length; i++) {
    s1 +=arr[i][i]
    s2 +=arr[i][arr.length-i-1]
}
console.log('左上-右下对角线:', s1)
console.log('左下-右上对角线: ', s2)

练习4、计算斐波拉契数列的前20项之和

var arr = new Array();
arr[0] = 1;
arr[1] = 1;
let sum =2;
for (var i =2; i < 20; i++) {
   arr[i] = arr[i - 1] + arr[i - 2];
   sum+=arr[i]
}
console.log(arr);
console.log(sum);

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值