zoukankan      html  css  js  c++  java
  • JavaScript之数组

    目录

    数组1

    创建数组2

    访问数组2

    遍历数组3

    数组分类3

    数组方法4

    应用1

    数组属性1

    排序算法1

    1. 函数的值传递和引用传递(堆和栈及索引思维)1

    对象的两种创建方式1

    应用:1

    综合应用:1

    数组

    定义:数组是一个可以存储一组或一系列相关数据的容器。

    为什么要使用数组?

       1:为了解决大量相关数据的存储和使用的问题。

       2:模拟真实的世界(班级、军队)

    创建数组

    1:通过构造函数的方式来创建。 var a = new Array();

      1.直接赋值

       var a=new Array(数据1,数据2,…);

       --------------------------------------------------------------

       var a=new Array(数值)

           如果括号中只有一个元素,并且这个元素是数值类型的,那么他就是指定数组的长度。 并且它的值都是undefined

          数组的属性:length 属性 (获取整个数组的长度)。

      2.声明以后再赋值

    var a=new  Array(); a[0]=1;  a[1]=2;  a[2]=3;

    2JSON方式创建数组 var a=[];

    1.直接赋值:

          var a=[1,2,3,4];

    2.声明以后再赋值:

          var a=[]; a[0]=1;  a[1]=2;  a[2]=3;

    JS数组可以存储任何类型的值。

    访问数组

    通过数组的(中括号)下标访问。

    数组下标从0开始,他的最大值,是length-1。有8个元素的话,则长度是8,如果要访问最后一个元素,则访问7。因为下标从0开始,01234567

    数组的操作

    arr.push(数组元素......) 参数之间要用逗号隔开。

        向数组的末尾添加新的元素,返回值是新数组的长度。

        可以一次添加多个元素。

    arr.pop()

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

    arr.unshift(数组元素.....)

        向数组的开头加入新的元素,返回值是新数组的长度。

        可以一次添加多个元素arr.shift()

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

    遍历数组

    1for循环。

    2while循环。

    3for in循环。

    for in的作用:

    1:用于数组的遍历。

    2:用于对象属性的遍历。

    数组分类

    整数数组/字符串数组/对象数组/二维数组

    按照维度来分类

         1.一维数组

         2.二维数组

         声明二维数组:

    var arr=[ [1,2,3], [4,5,6]];    alert(arr[1][1]);

    //5

    应用

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

    2定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;

    然后按顺序每五个数求出一个平均值,

    放在另一个数组中并输出。试编程。

    3通过循环按行顺序为一个5×5的二维数组a125的自然数,然后输出该数组的左下半三角。试编程。

    排序算法

    1:冒泡排序

    5,1,3,2,4

    1,5,3,2,4

    1,3,5,2,4

    1,3,2,5,4

    1,3,2,    4,            5

               1,       ,2,                  3                 4,                     5

    思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。

    即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

    function bubbleSort (arr) {

        // 控制冒泡的
        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;
                }
           }
        }
        return arr;
    }

    2选择排序

    思路分析:选择排序和冒泡排序类似,也是依次对相邻的数进行两两比较。不同之处在于,它不是每比较一次就调换位置,而是一轮比较完毕,找到最大值(或者最小值)之后,将其放在正确的位置,其他数的位置不变。

    1,5,3,2,4

    1,  5,3,2,4  //1

    1,2    5,3,4 //2

    1,2,3   5,4//3

    1,2,3,4  5 //4

    1,2,3,4,5 //5

    function selectionSort(arr){

    var len = arr.length,min;

    for (i=0; i < len; i++){

    // 将当前位置设为最小值

    min = i;

    // 检查数组其余部分是否更小

    for (j=i+1; j < len; j++){

    if (arr[j] < arr[min]){

    min = j;

    }

    }

    // 如果当前位置不是最小值,将其换为最小值

    if (i != min){

    var temp = arr[i];

    arr[i] = arr[min];    

    arr[min] = temp;

    }

    } return arr;

    }

    1. 函数的值传递和引用传递

    1:值传递

    定义:调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

    2:引用传递

    定义:调用函数时将实际参数的地址传递到函数中,这样在函数中如果对参数所进行的修改,将影响到实际参数。

    堆和栈及索引思维

    栈(stack)和堆(heap)

    栈为自动分配的内存空间;而堆 则是动态分配的内存。

    基本类型和引用类型

      基本类型:存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。

      5种基本数据类型有Undefined、Null、Boolean、Number 和 String,它们是直接按值存放的,所以可以直接访问。

      引用类型:存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。

      当我们需要访问引用类型(如对象,数组,函数等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。

    对象的两种创建方式 

    1.构造函数 创建对象

    2.JSON形式创建对象 {name’zhangsan’}  或者 {‘name’’zhangsan’}

    随机点名程序

    现有数组存在学生姓名 var arr = [‘zhangsan’,’lisi’] ,使用Math.random() 实现

    应用:

    1数组的冒泡排序

    2数组的选择排序

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

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

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

    综合应用:

    1编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组12,2,3,4,5

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

    3使用JSON形式创建一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息,

    同时该对象包含一个自我介绍的方法,用来输出该对象的所有信息

    4以下是某班级一次考试的成绩表。请计算总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号。

  • 相关阅读:
    剑指offer 把字符串转换成整数 python
    剑指offer 重建二叉树 python
    LeetCode 82 删除排序链表中的重复元素 II python
    LeetCode 142 环形链表 II python
    hashlib
    configparser
    正则
    logging
    模块
    文件操作
  • 原文地址:https://www.cnblogs.com/huangzhenhui/p/7544685.html
Copyright © 2011-2022 走看看