数组相关内容

一、数组基础

数组:

一系列数据的集合

也就是我们把一些数据放在一个盒子里面,按照顺序排好,这个东西就是一个数组,存储着一些数据的集合

例如:var arr[1,2,3]

数组数据类型Array

数据类型分为两个类别:基本数据类型复杂数据类型

基本数据类型: number string boolean undefined null

复杂数据类型:function object Aaary

创建数组的方式

1、字面量创建数组:

var arr = []    //创建一个空数组
var arr = [12,23,34]   //创建一个有内容的数组

2、构造函数创建数组:

 var  arr = new Array()   //创建一个空数组
 var  arr = new Array(12,23,34)  //创建一个有内容的数组
 var  arr = new Arrsy(6)   //创建一个长度为6的数组

数据的长度(length)

-length: 长度的意思

-length 就是表示数组的长度,数组里面有多少个成员,length 就是多少

数据的索引

-索引,也叫做下标,是指一个数据在数组里面排在第几个的位置

-注意: 在所有的语言里面,索引都是从 0 开始的

-在 js 里面也一样,数组的索引从 0 开始

var arr=[23,45]   //创建一个数组
//在这组数组中,第0个数据就数字23,第1个数就是数字45,想要获取数组中的第几个就使用 数组[索引] 来获取
document.write(arr.[0])   
document.write(arr.[1])

数组的遍历

-因为数组的索引就可以获取数组中的内容

-数组的索引又是按照 0 ~ n 顺序排列

-我们就可以使用 for 循环来循环数组,因为 for 循环我们也可以设置成 0 ~ n 顺序增加

var arr = [1,2,3,4,5]
//使用for循环来遍历数组
for(var i=0;i<arr.length;i++){        //arr.length数组的长度
    console.log(arr[i])  //控制台打印数组
}

例如:

//现有5名学生,语文成绩分别是98,87,95,89,77分,请定义一个成绩数组存储学生成绩并遍历输出

  var arr = [98, 87, 95, 89, 77] 
​
  var len = arr.length 
​
  for (var i = 0; i < len; i++) {
​
  document.write(arr[i])    //页面显示数组
​
  }

//求这5名学生总成绩?

var arr = [98, 87, 95, 89, 77]
​
        var len = arr.length
​
        var sum = 0
​
        for (var i = 0; i < len; i++) {
​
        sum += arr[i]
​
        }
        document.write('总成绩是','sum')

//求大于平均分的学生成绩?

 var arr = [98, 87, 95, 89, 77]
        var len = arr.length
        var sum = 0
        for (var i = 0; i < len; i++) {
            sum += arr[i]
        }
        var avg = sum / len    //求平均数
        for (var i = 0; i < len; i++) {
        if (arr[i] > avg) {
        document.write(arr[i], "<br/>")
        }
        }

//求数组[89,78,90,99,67,59]的最大值、最小值以及 不及格的人数

var scores = [89, 78, 90, 99, 67, 59]
        var len = scores.length
        var max = 0
       
        for (var i = 0; i < len; i++) {
            if (scores[i] > max) {
                max = scores[i]
            }
        }
        document.write('最大值是', max,'<br/>')
        
        var min=scores[0]
        for(var i=0;i<len;i++){
            if(min>scores[i]){
                min=scores[i]
            }
        }
        document.write('最小值是', min,'<br/>')
  
   
        var count=0    //计数器
        for(var i=0;i<len;i++){
          
            if(scores[i]<60){
                count++
            }        
        }
        document.write('不及格的学生人数有',count,'个')

//任意数据数组中的内容交换

  var arr = [23, 6, 25, 33]
        var i = 1
        var j = 3
        function swap(arr, i, j) {
            var temp = arr[i]
            arr[i] = arr[j]
            arr[j] = temp
            document.write(arr)
            return arr    
        }
        swap(arr, i, j)

二、数据类型之间储存的区别

存储空间主要分为:

-栈: 主要存储基本数据类型的内容

-堆: 主要存储复杂数据类型的内容

数据类型之间的比较:1、基本数据类型是 值 之间的比较

​ 2、复杂数据类型是 地址 之间的比较

注意:基本数据类型的变量是存储在栈区域

复杂数据类型:1、数组对象存储在堆区域

2、对象名、数组名存储在堆区域

3、栈区域中引用变量存储的值是对象在堆区域的内存地址

三、数组的常用方法:

1、push 是用来在数组的末尾追加一个元素

2、pop 是用来删除数组末尾的一个元素

3、unshift 是在数组的最前面添加一个元素

4、shift 是删除数组最前面的一个元素

5、splice 是截取数组中的某些内容,按照数组的索引来截取

6、reverse 是用来反转数组使用的

7、sort 是用来给数组排序的 (默认是升序)

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

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

四、数组的排序

排序的两种方式:冒泡排序选择排序

冒泡排序:

1、基本思想:-先遍历数组,让挨着的两个进行比较,如果前一个比后一个大,那么就把两个换个位置

-数组遍历一遍以后,那么最后一个数字就是最大的那个

-然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置

-以此类推,最后就会按照顺序把数组排好了

案例:

var arr = [45, 89, 99, 73, 42] 
var len=arr.length
for(var i=0;i<len-1;i++){
    for(var j=0;j<len-i-1;j++){
        if(arr[j]>arr[j+1]){
          var atem=arr[j]
          arr[j]=arr[j+1]
          arr[j+1]=atem
        }
    }
}
console.log(arr)

选择排序:

基本思想:-在要排序的一组数中,选出最小的一个数与第一个位置的数交换-然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止

案例:

 var arr = [99, 89, 43, 73, 42]
 varlen=arr.length
 for(var i=0;i<len-1;i++){
     var minIndex=i
     for(var j=i+1;j<len;j++){
         if(arr[minIndex]>arr[j])
         minIndex=j
     }
     var temp=arr[i]
     arr[i]=arr[minIndex]
     arr[minIndex]=temp
     console.log(arr)
 }

五、函数参数传递

基本数据类型和复杂数据类型的区别:- 因为复杂数据类型,变量存储的是地址,真实内容在 堆空间 内存储

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

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

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

六、ES6 中常见的数组常用方法

indexOf:查找字符串中指定字符或字符串首次出现的位置,返首索引值

-语法:str1.IndexOf("字"); //查找“字”在str1中的索引值(位置)

forEach:- 和 for 循环一个作用,就是用来遍历数组的

-语法:arr.forEach(function (item, index, arr) {})

map:和 forEach 类似,只不过可以对数组中的每一项进行操作,返回一个新的数组

filter:- 和 map 的使用方式类似,按照我们的条件来筛选数组

-把原始数组中满足条件的筛选出来,组成一个新的数组返回

案例:

 // 输出年龄大等于20岁的姓名  //filter的方法
  var products = [{
                name: 'jack',
                age: 20},
            {
                name: 'rose',
                age: 23},
            {
                name: 'lilei',
                age: 19}
        ]
     var newArr=products.filter(function(item,index){
         return item.age>=20
     })
     newArr.forEach(function(item,index){
         console.log(item.name)
     })
 // 输出年龄大等于20岁的姓名  //for循环的方法
  var products = [{
                name: 'jack',
                age: 20},
            {
                name: 'rose',
                age: 23},
            {
                name: 'lilei',
                age: 19}
        ]
    var len=products.length
    for(var i=0;i<len;i++){
        var item=products[i]
        if(item.age>=20){
            console.log(item.name)
        }
    }

find:-find() 方法返回通过测试(函数内判断)的数组的第一个元素的值

七、伪数组

伪数组:1、拥有 length 属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)

2、不具有数组所具有的方法

常见的伪数组有:

函数内部的 argumentsDOM 对象列表(比如通过 document.getElementsByTags 得到的列表)jQuery 对象(比如 $("div") )伪数组是一个 Object,而真实的数组是一个 Array。

伪数组存在的意义,是可以让普通的对象也能正常使用数组的很多方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值