数组

任务

  • 了解数组的概念
  • 学会声明数组
  • 数组的访问
  • 数组的遍历
  • 数组的属性:length
  • 动态初始化数组
  • 排序
  • 引用类型传参
  • 二维数组
  • JSON

数组

  • 有序的内存单元集合。
  • 作用:可以有序的保存各种类型的数据

数组的声明方式

  • 方括号

  • 构造函数初始化数组长度

  • 构造函数:构造对象用的,通常由new关键字调用

    var _arr01=[];//声明数组的第一种方式,用一对中括号表示数组
    var _arr02=new Array();//声明数组的第二种方式:构造函数声明数组
    //构造函数只能由new关键字调用
    //构造函数的作用:用来构造对象用。_
    var _arr03=new Array(8);//给构造函数传递一个参数时表示的时设定数组长度
    var _arr04=new Array(8,5,0,3,1);//给构造函数传递多个参数时表示初始化数组
    console.log(_arr04);
    

数组的访问方式

  • 下标索引
    • 索引值从0开始

数组的遍历

  • length:用数组名点length就可以获取到数组的长度

数组的初始化

  • 手动初始化
  • 动态初始化

引用类型传参和基础数据类型传参的区别

  • 基础数据类型传参传递是值
  • 引用类型传参,传递的是:内存地址
  • 注意点:重新赋值和修改

数组排序

  • 冒泡排序
  • 选择排序

二维数组

  • 语法:

    var _arr=[[8,5,0,3,1],[9,5,7,3,1],[7,8,6,4,5]];//声明:
    _arr[0][3]===3;//二维数组的访问
    var _first=_arr[0];//_first=[8,5,0,3,1];
    _first[3]===3;
    

JSON

  • JSON是一种数据格式:字面量对象
  • 语法
        var _obj={//声明并初始化
			k01:10,
			k02:11,
			k03:12
        };
        _obj.k01===10;//如何访问字面量对象
        _obj["k01"]===10;//访问字面量对象的第二种方式
  • 遍历:for - in

数组的常见方法

  • concat()

    连接两个或更多的数组,并返回一个合并后的新数组,不改变原数组。

        function fn(){
            var _arr1=[8,5];
            var _arr2=[0,3,1];
            console.log(_arr1.concat(_arr2));
        }
        fn();
    
  • join()

    将数组的每个元素用指定的分隔符分隔拼接成字符串并返回。

        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.join("#"));
        }
        fn();
    
  • pop()

    删除并返回数组的最后一个元素

        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.pop());//1
            console.log(_arr1.pop());//3
        }
        fn();
    
  • push()

    向数组的末尾添加一个或更多元素,并返回新数组的长度。

        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.push(10));//6
            console.log(_arr1.push(10,11,12));//9
            //总结:push方法可以添加一个参数也可以添加多个参数
        }
        fn();
    
  • reverse()

    颠倒数组中元素的顺序。

        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.reverse());
        }
        fn();
    
  • shift()

    删除并返回数组的第一个元素

        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.shift());
        }
        fn();
    
  • slice()

    从某个已有的数组返回选定的元素。至少需要一个参数start,start是一个数字,规定从何处开始选取。
    如果start是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

    第二个参数over规定从何处结束选取。over是数组片断结束处的数组下标。
    如果没有指定over,那么切分的数组包含从 start 到数组结束的所有元素。
    如果这个over是负数,那么它规定的是从数组尾部开始算起的元素。

        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.slice(1));//[5,0,3,1]
        }
        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.slice(-2));//[3,1]
        }
        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.slice(-2,-1));//[3]//不包含结束位置,包含开始位置
        }
        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.slice(2,-1));//[0,3]
        }
    	function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.slice(2,5));//[0,3,1]
        }
        fn();
    
  • sort()

    对数组的元素进行排序

        function fn(){
            var _arr1=[8,5,0,3,1];
            console.log(_arr1.sort());//[0,1,3,5,8]
        }
        function fn(){
            var _arr1=[8,95,0,31,1];
            console.log(_arr1.sort());//[0,1,31,8,95]
            //将元素转换成字符串,用字符串的首字符进行比较,如果相等继续比较第二个字符
        }
        
        function fn(){
            var _arr1=[8,95,0,31,1];
            console.log(_arr1.sort(function(a,b){
                return a-b;
            }));//[0,1,8,31,95]
        }
        fn(); 
    
  • splice()

    删除元素,并向数组添加新元素,并返回被删除的元素。第一个参数表示要删除的开始位置(索引),第二个参数表示要删除的数量,第二个以后的参数表示新增的元素

        function fn(){
            var _arr1=[8,95,0,31,1];
            console.log(_arr1.splice(1,1));//删除下标索引从1开始的一个元素
        }
        function fn(){
            var _arr1=[8,95,0,31,1];
            console.log(_arr1.splice(1,1,100));//删除下标索引从1开始的一个元素,并添加一个100到下标索引值为1的地方
            console.log(_arr1);
        }
        function fn(){
            var _arr1=[8,95,0,31,1];
            console.log(_arr1.splice(1,1,100,101));//删除下标索引从1开始的一个元素,并添加一个100到下标索引值为1的地方
            console.log(_arr1);
        }
        fn();
    
  • toString()

    把数组转换为字符串,并返回结果。

  • unshift()

    向数组的开头添加一个或更多元素,并返回新的长度。

        function fn(){
            var _arr1=[8,95,0,31,1];
            console.log(_arr1.unshift(10));
        }
        fn();
    
  • 1.编写一个函数,计算两个数字的和、差、积、商。要求:使用传参的形式

  • 2.编写一个函数,计算三个数字的大小,按从小到大顺序输出

  • 3.编写任意个数字的求和、差、积、商的函数

  • 4.编写生成4位数字验证码的函数,并生成10次,同时将结果存入数组

  • 5.编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数。比如: 计算0-3之间能组成的奇数个是01、21、03、13、23、31

  • 6.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文

  • 7.利用递归求两个数字的最大公约数

  • 8.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数求/1+1/3+…+1/n

  • 9.使用函数完成任意数字阶乘的计算。要求:页面输入任意数字,点击按钮后计算阶乘

  • 10.山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。

  • 11.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。

  • 12.通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试编程。

  • 13.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么

  • 14.数组的冒泡排序

  • 15.数组的选择排序

  • 16.编写函数map(arr) 把数组中的每一位数字都增加30%

  • 17.编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型

  • 18.编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组

  • 19.有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

  • 20.使用JSON形式创建一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息,同时该对象包含一个自我介绍的方法,用来输出该对象的所有信息

  • 21.扩展案例:以下是某班级一次考试的成绩表。请计算每个学生总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号。

  • 学号语文数学英语总成绩备注
    110562118
    28978120
    3866480
    4789991
    5107.59770
    61126192
    710179104
    87172105
    9566861
    10988377
  • 二维数组求和

    var _dimensional=[
        [63,14,68,29,74,96],
        [2,40,12,37,37,87],
        [43,18,33,54,34,56],
        [26,35,66,38,31,62],
        [9,66,95,74,42,93],
        [38,37,46,10,42,22]
    ];
  • 二维数组排序
		var _arr=[[8,5,0,3,1],[9,5,7,3,1],[7,8,6,4,5]];
  • JSON格式数据排序
		var _data={
            title:["ID","name","price","sold","praise"],
            list:[{
                ID:20,name:"小米",price:"1000",sold:8000,praise:899
            },{
                ID:18,name:"华为",price:"2000",sold:8999,praise:5000
            },{
                ID:30,name:"苹果",price:"5000",sold:5000,praise:5000
            },{
                ID:31,name:"vivo",price:"1500",sold:2000,praise:1500
            },{
                ID:28,name:"oppo",price:"1300",sold:1000,praise:1000
            }]
        };

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶子 ✪ω✪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值