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以下是某班级一次考试的成绩表。请计算总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号。

  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/huangzhenhui/p/7544685.html
Copyright © 2011-2022 走看看