关于函数的数组

本文详细介绍了JavaScript中的数组,包括数组的定义、创建方式、length属性、索引概念、遍历方法、数据类型存储差异、函数参数传递及数组的常用操作方法如push、pop、sort等,还探讨了ES5的数组遍历方法如forEach、map等。

一.什么是数组

1.数组就是一系列有序数据的集合
2.也就是我们把一些数据放在一个盒子里面,按照顺序来排列好这个东西就是一个数组,储存着一些数据的集合
在这里插入图片描述

3.我们见得把所有数据类型分为两大类:

    a.基本数据类型:(五大类)number/string/boolean/undefined/null
    b.复杂数据类型:Object/Function/Array/......

二.如何创建一个数组

1.字面量创建一个数组
在这里插入图片描述

2.内置构造函数创建数组
在这里插入图片描述

下面展示一些 内联代码片

// 以下是两种方法创建函数的案例

        /* 
          1. 创建一个学生成绩数组,存储所有学生的数学成绩,分别是 89,78,90,99,67,59
         */
        var scoreArray = [89, 78, 90, 99, 67, 59]

        /* 
          2. 求所有学生中分数最高的学生成绩,打印输出到界面
            分析: 最大值
              假设第一个数是最大值max,
                 var max = scoreArray[0]

              让后面的数依次与max比较,如果比较max大,则将值赋值给max, 所有数比较完之后,max中存储的为最大值
                for(var i = 1;  i< scoreArray.length; i++){
                    if(scoreArray[i]  > max) {
                      max = scoreArray[i]
                    }
                }
                 
        */
        function getMaxScore() {
            var max = scoreArray[0] //假设第一个数是大值max
            for (var i = 1; i < scoreArray.length; i++) {
                var score = scoreArray[i]
                if (score > max) {
                    max = score
                }
            }

            console.log('最高分是 ', max)
        }
        // getMaxScore()

        /* 
         3. 求所有学生中分数最低学生成绩,打印输出到界面
         分析: 最小值
              假设第一个数是最小值min,
                 var min = scoreArray[0]
              让后面的数依次与min比较,如果比较min小,则将值赋值给min, 所有数比较完之后,min中存储的为最小值
        */

        function getMinScore() {
            var min = scoreArray[0]
            for (var i = 1; i < scoreArray.length; i++) {
                if (scoreArray[i] < min) {
                    min = scoreArray[i]
                }
            }

            console.log('最低分是 ', min);
        }

        // getMinScore()


        /* 
            4. 求不及格的学生有几个,打印输出到界面
            分析: 计数器 
                  var count = 0  如果满足条件 count++ 
                 [89, 78, 90, 99, 67, 59]
                
                 不及格学生,指的是成绩小于60分的

                if(score < 60){
                    count++
                }
        */
       function getFailCount(){
           var count = 0
           for(var i = 0; i<scoreArray.length; i++){
               var score = scoreArray[i] //获取成绩
               if(score < 60){
                   count++
               }
           }
           console.log('不及格人数是 ',count);
       }

       getFailCount()
   

三.数组的length和索引方法

1.数组的lenght

   a.lenght就是长度的意思
   b.表示数组的长度,数组里面有多少个成员,lenght就是多少

eg
下面展示一些 内联代码片

// lenght的示例
var scroeArray =[80,90,59,99,75,62]  

//函数里有80.90.59.99.75.62 6个数

     scoreArray.length(6)
     //那么length的数就是6

2数组的索引

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

b.在所有的语言里面,索引都是从0开始的
c.数组里面的索引也是从0开始的

在这里插入图片描述

四.数组的遍历

1.什么叫遍历

    因为数组索引可以获取数组中的内容,
    索引又是按照0~n的顺序排列的
    我们就可以for循环来循环数组for循环我们也可以设置为0~n
    我们就把这个行为叫做遍历

在这里插入图片描述

五.数据类型之间存储的区别

1.存储空间分为两种:堆和栈
在这里插入图片描述
在这里插入图片描述
栈:主要存储基本数据类型的内容
堆:主要存储复杂数据类型的内容

2.数据类型之间的比较
在这里插入图片描述
基本数据类型是值之间的比较,复杂数据类型是 地址之间比较

下面展示一些 内联代码片

// 数据之间的比较的案例

        // 基本数据类型
        var num1 = 100
        var num2 = '100'
        // console.log(num1 == num2)  //true


        // 复杂数据类型
        var obj1 = {name:'jack',age:20}
        var obj2 = {name:'jack',age:20}
        // console.log(obj1);
        // obj1.name = 'rose' //将obj1指向的对象name属性值更改为rose

        // console.log(obj1);
        // console.log(obj2);

        var obj3 = obj2
        obj3.name = 'lilei'
        console.log(obj2);

        // console.log(obj3 == obj2)

        
        //复杂数据类型
        var arr1 = [10,20,30]
        var arr2 = [10,20,30]
        console.log(arr1 == arr2)

六.函数参数传递

1.基本数据和复杂数据之间的区别
在这里插入图片描述
下面展示一些 内联代码片


        // 基本数据类型
        var num1 = 100
        var num2 = '100'
        // console.log(num1 == num2)  //true


        // 复杂数据类型
        var obj1 = {name:'jack',age:20}
        var obj2 = {name:'jack',age:20}
        // console.log(obj1);
        // obj1.name = 'rose' //将obj1指向的对象name属性值更改为rose

        // console.log(obj1);
        // console.log(obj2);

        var obj3 = obj2
        obj3.name = 'lilei'
        console.log(obj2);

        // console.log(obj3 == obj2)

        
        //复杂数据类型
        var arr1 = [10,20,30]
        var arr2 = [10,20,30]
        console.log(arr1 == arr2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七.数组的常用方法

1.push: 在数组的尾末追加一个元素
在这里插入图片描述

  1. pop:用来删除数组尾末的一个元素

在这里插入图片描述

3.unshift:在数组最前面添加一个元素

4.shift:删除数组最前面一个元素

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

6.reverse:是用来翻转数组用的

在这里插入图片描述

7.sort 用来给数组排序的
在这里插入图片描述
8.concat是把多个数组进行拼接

在这里插入图片描述
9.join是吧数组里的每一项内容链接起来变成一个字符串
在这里插入图片描述
10.indexOf
在这里插入图片描述
下面展示一些 内联代码片

 案例

        var scoreArray = [98, 78, 86, 59, 94]

        // scoreArray.push(100)
        console.log(scoreArray);
        var count = 0 
        for (var i = 0; i < scoreArray.length; i++) {
            //不及格成绩
            if (scoreArray[i] < 60) {
                count++
                if (count == 1) {
                    scoreArray.splice(i, 1)
                    break;
                }
            }
        }

        scoreArray.sort()

        console.log(scoreArray);

ES5常用数组遍历方法

1.forEach
在这里插入图片描述

在这里插入图片描述

2.map
在这里插入图片描述
在这里插入图片描述
3.filter
在这里插入图片描述
在这里插入图片描述

4.find

5.every
在这里插入图片描述
6.some
在这里插入图片描述
7.reduce
在这里插入图片描述
在这里插入图片描述
下面展示一些 内联代码片


        var scoreArray = [98, 89, 90, 48, 88, 56, 78]
        var sum = scoreArray.reduce(function(s,item,index){
            return s + item
        },0)
        console.log('sum = ',sum);


        //学生成绩数组是否全部合格,如果全部合格返回 true,否则false
        // var isOk = true
        // for(var i =0; i< scoreArray.length; i++){
        //     if(scoreArray[i] < 60){
        //         isOk = false
        //         break;
        //     }
        // }
        // isOk

        // var isOk = scoreArray.every(function(item,index){
        //     return item > 60
        // })
        // console.log('isOk ',isOk);

        // var isOk = scoreArray.some(function(item,index){
        //     return item < 60
        // })

        // console.log('isOk ',isOk);






        // var arr = [1,2,3]
        // arr.forEach(function(item,index,oldArr){
        //     console.log('item :',item, ' index :',index, ' oldArr',oldArr)
        // })

        // var scoreArray = [98, 89, 90, 48, 88, 56, 78]
        // scoreArray.forEach(function(item){
        //     console.log(item);
        // })

        // var newArray = scoreArray.map(function(item){
        //     return item * 10   // [980, 890,900,880]
        // })
        // console.log(newArray);

        //  ['<h2>980</h2>', '<h2>890</h2>','<h2>900</h2>', '<h2>880</h2>']
        // var newArray = scoreArray.map(function(item){
        //     return '<h2>'+ item * 10 +'</h2>'   // ['<h2>980</h2>', '<h2>890</h2>','<h2>900</h2>', '<h2>880</h2>']
        // })
        // console.log(newArray);

        // 找所有合格成绩,放到一个新数组中
        // var newScore = scoreArray.filter(function (item, index) {
        //     return item > 60 //[98,89,90,88,78]
        // })
        // console.log(newScore);


        //找第一个不合格分数
        // var score = scoreArray.find(function (item, index) {
        //     return item < 60  //return返回的是满足条件的元素item
        // })
        // console.log(score)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值