目录算法
数组1编程
建立数组2数组
访问数组2dom
遍历数组3函数
数组分类3spa
数组方法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;
2:JSON的方式建立数组。 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()
删除数组的第一个元素,返回删除的元素
1:for循环。
2:while循环。
3:for 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的二维数组a赋1到25的天然数,而后输出该数组的左下半三角。试编程。
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:值传递
定义:调用函数时将实际参数复制一份传递到函数中,这样在函数中若是对参数进行修改,将不会影响到实际参数。
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) 将数组的重复元素去掉,并返回新的数组。【1,2,2,3,4,5】
2:有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
3:使用JSON形式建立一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息,
同时该对象包含一个自我介绍的方法,用来输出该对象的全部信息。
4:如下是某班级一次考试的成绩表。请计算总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号。