JavaScript数组

这篇博客探讨了JavaScript中的数组,详细介绍了数组的存储结构以及常用的数组方法,如push、pop、unshift等,并讲解了ES5的数组遍历方法如forEach、map、filter等。还涉及到了数组的排序方法和冒泡排序算法。
摘要由CSDN通过智能技术生成

补充(数组的存储结构)

1、基本数据类型变量都存储在栈区域

2、引用变量或对象名存储在栈区域

3、复杂数据类型存储在堆区域,赋值时是将对象在堆区域地址赋值给变量或对象

数组常用的方法

1、push(在数组的最后面追加元素)

​         数组名.push()

2、pop(把数组的最后一位元素弹出,相当于删除)

​         数组名.pop()

3、unshift(数组最前面添加元素)

​         数组名.unshift()

4、shift(删除数组最前面的元素)

        ​ 数组名.shift()

5、splice(下标,个数,参数)

        ​ 数组名.splice(下标,个数,参数)

​         (1)、只有前面两个参数时:从下标开始删除,个数为几就删除几个。

        ​ (2)、有三个参数时:第三个参数时把之前的值换成第三个参数的值。

6、reverse(元素倒着显示,最后一个显示在第一个位置,以此类推)

​         数组名.reverse()

7、sort(排序默认由低到高,默认排序规则:按照字符串编码unicode码)

​         数组名.sort()

​         可以自己去改变排序的规则

8、concat (是把多个数组进行拼接)

 

最后的结果为arr6=[1,2,3,4,5,6]

9、join (是把数组里面的每一项内容链接起来,变成一个字符串)

10、slice( 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。)

 

11、indexOf(返回索引号)

 

判断是否有这个元素

 

说明:如果元素不存在,返回-1

12、includes(判断数组是否有某个元素)

 

ES5常用数组遍历方法

forEach

匿名函数

数组名.forEach(function(item,index,变量名){

​ 第一个形参:item 数组元素

​ 第二个形参:index 是索引号

​ 第三形参:变量名

})

 例题:

//求最大值
var arr=[87,87,89,98,99,100]
var max=0
arr.forEach(function(item,index){
    if(item>max){
        max=item
    }
})
console.log('最大值是:',max)

map

语法 

 var newArr=数组名.map(function(item,index,变量名){

​ 第一个形参:item 数组元素

​ 第二个形参:index 是索引号

​ 第三形参:变量名

​ return 新元素

​ })

例题 

//arr中的所有元素都减10
var arr=[99,94,78,43,79]
var newArr=arr.map(function(item){
    return item-10
})
console.log(newArr)//结果为:[89,84,68,33,69]

filter

语法 

var newArr=数组名.filter(function(item,index,变量名){

​     第一个形参:item 数组元素
    
​     第二个形参:index 是索引号

​     第三形参:变量名

​     return 条件

​ })

例题 

//找大于70分的成绩
var arr=[34,78,97,56]
var newArr=arr.filter(function(item){
    return  item>70
})
console.log(newArr)

find

作用:查找第一个满足条件的元素,找到就结束​

语法 

var newArr=数组名.find(function(item,index,变量名){

​ 第一个形参:item 数组元素

​ 第二个形参:index 是索引号

​ 第三形参:变量名

​ return 条件

​ })

例题 

//找大于70分的成绩
var arr=[34,78,97,56]
var newArr=arr.find(function(item){
    return  item>70
})
console.log(newArr) //显示结果为78,后面的不会去执行

every (相当于与 &&)

作用:1.遍历数组

​ 2.查找数组元素是否全部满足条件,全部满足条件返回true,否则为false

例题 

//判断是否所有的学生成绩都及格
var arr=[34,78,97,56]
var isOK=arr.every(function(item){
    return  item>60
})
console.log(newArr)

some (相当于或 ||)

作用:数组中是否有元素满足指定的条件,只要有一个满足返回true

例题 

//查找是否有不及格的学生,有返回true
var arr=[34,78,97,56]
var newArr=arr.some(function(item){
    return  item<60
})
console.log(newArr)

reduce

语法 

数组名.reduce(function(previousValue,currentValue,currentIndex,原数组){
    //previousValue上一个值,如果initValue存在,第一次遍历时previousValue就是initValue
    //currentValue当前数组元素
    //currentIndex当前数组索引号
},[initValue])

 例题:

//累加求和
var arr=[766,53,68,86,97]
var sum=arr.reduce(function(previousValue,currentValue){
    return previousValue+currentValue
},0)
console.log('累加求和:',sum)

数组的排序

冒泡排序

​ 算法思想:相邻的两个数,两两比较,如果前面的数大于后面的数,就交换位置,第一轮比较完,最大数到最后面。

​ 第二轮重复上述操作,找到第二大的数,以此类推。

1、n个数排序,进行n-1轮冒泡排序

2、每一轮循环有n-1-i次循环

var arr=[75,35,78,64,26]
//外层循环冒泡轮数
for(var i=0;i<arr.length-1;i++){
    //内层循环,两两比较交换位置
    for(var j=0;j<arr.length-1-i;j++){
        //相邻两个数,两两比较
        if(arr[j]>arr[j+1]){
            //交换位置
            var temp=arr[j]
            arr[j]=arr[j+1]
            arr[j+1]=temp
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值