学习js的第六天【数组的存储结构,常用方法,常用数组遍历方法】

一、数组的存储结构

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

2.引用变量存储在堆区域,如对象。

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

4.- 因为复杂数据类型,变量存储的是地址,真实内容在 堆空间 内存储

- 所以赋值的时候相当于把 obj 存储的那个地址复制了一份给到了 obj1变量

 现在 obj 和 obj1 两个变量存储的地址一样,指向一个内存空间

- 所以使用 obj1 这个变量修改空间内的内容,obj 指向的空间也会跟着改变了

二、数组的常用方法

数组对象:属性和方法

var arr=[10,20,30]

arr.length属性

方法:

1.push==>向数组末尾追加元素

var arr=[10,20,30]
arr.push(40)------->向数组中追加元素40

2.pop==>删除数组末尾的一个元素

arr.pop()

3.unshift==>在数组头部追加一个数

arr.unshift(32)

4.shift==>删除数组最前面的数

arr.shift()

5.splice==>删除任意的元素==》splice(下标,元素个数)

arr.splice(1,2)---->表示从下标1开始,删除两个元素

截取数据:arr.splice(1,1,50)---->表示截取下标为1的元素换成50

6.reverse==>反转数组

arr.reverse()

7.sort==>把数组排序,默认由高到低,排序规则:先转成字符串,使用字符编码unicode码排序

负数升序排序(a-b),正数降序(a+b)

var arr=[17,20,30,45,67,89]
var fun=function(a,b){
if(a<b){
 return -1}
if(a>b){
return 1}
if(a=b){
return 0}
}arr.sort(fun)

8.concat==>把多个数组拼接在一起

var arr=[1,2,3,4]
var arr1=[5,6,7,8]
var arr3=arr.concat([5,6,7,8])

9.join==>把数组的每一项内容连接起来,变成字符串

var arr=[1,2,3,4]
var str=arr.join('-')

10.slice==>返回一个新数组,这一对象是由begin和end决定的元数组的浅拷贝,原始数组不会变。【只包括开始不包括结束】

var arr=[1,2,3,4]
console.log(arr.slice(2,4))----->输出值为2,3不包括4

11.indexof===>用来找到数组中某一项的下标--》如果元素不存在,则返回-1

arr.indexof()

12.includes==>检测数组是否包含要找的数,找不到就返回flase

arr.includes()

可以利用【indexOf==-1和includes==flase来解决一些问题】

三、ES5常用的数组遍历方法

1.forEach()方法

arr.forEach(function(item,index){

  console.log(index,item))}

有三个参数:function(数组元素,索引号,原数组)

var arr=[98,78,88,95,76,66,56]
        //1.forEach()方法
        arr.forEach(function(item,index){
            console.log('index'+' '+index+' '+'item'+' '+item)
        })

2.map===>遍历数组可以得到一个新的数组

arr.map(function(item){

return 新元素

})

//2.map---->遍历数组,可以得到一个新的数组
        var newMap=arr.map(function(item){
            return item-10
        })

3.filter==>把原始数组中满足条件的筛选出来,组成一个新的数组返回

 //3.把原始数组中满足条件的筛选出来,组成一个新的数组返回
//查找大于60的数
        var newFilter=arr.filter(function(item){
            return item>60
        })
        console.log(newFilter)

4.find===>找到满足条件的第一个数就返回,并结束。

//4.遍历数组,找到第一个满足条件的元素就返回
//找到一个大于90的数就返回,并结束
        var newFind=arr.find(function(item){
            return item>90
        })
        console.log(newFind)

5.every==>判断所有元素是否满足条件,如果全都满足返回ture,有一个元素不满足就返回false

 //5.every,判断所有元素是否满足元素,如果全部满足就返回ture,如果有一个不满足就返回false
        var newEvery=arr.every(function(item){
            return item>60
        })
        console.log(newEvery)

6.some==>只要有一个满足条件就为ture

 //6.some,只要满足一个条件就为ture
        var newSome=arr.some(function(item){
            return item<60
        })
        console.log(newSome)

7.reduce()方法

        reduce(callFun,[initvalue])

          callFun:function(previousvalue(初值),currentvale(当前数组元素),currentIndex(当前数组下标),arr(原数组))

        应用累加求和

var sum=arr.reduce(function(s(初值),item,index){
            return s+item
        },0)
        console.log(sum)

 var sum=arr.reduce(function(previousvalue,currentvalue){
            return previousvalue+currentvalue
        },0)
        console.log(sum)

冒泡排序:

 //n个数进行n-1轮比较
//利用冒泡排序,将数组进行升序排序
        var arr=[98,68,88,66,90,48,32,12,10]
        for(var i=0;i<arr.length-1;i++){j
            //外层循环表示比较的轮数,n个数进行n-1轮比较
            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
                }
            }
        }
        console.log('排序后的数:'+arr)
    </script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值