js - 数组
来源:互联网 发布:tcl上网络电视要广告 编辑:程序博客网 时间:2024/05/19 10:15
学习目标
- 认识数组
- 创建数组
- 数组元素的读写
- 数组的长度length
- 遍历数组
- 数组常用的方法
- 数组排序
【前言】引用类型Object.
- 引用类型是一种数据结构,用于将数据与功能封装在一起。
- 引用类型也称作类,但是这样子称作不是很恰当,javaScript虽然是面向对象的语言,他是它没有类和接口的东西。
- 引用类型也称作对象定义。描述的是一类对象所具有的属性和方法。
- 引用类型的值(对象)是引用类型的一个实例。
创建Object实例的方式有两种:Object构造函数法与字面量法。
当我们需要存储大量的数据时,就需要数组来存储数据
一、数组的概念
- Array数组是数据的有序列表;
- 数组中的每一个值叫做元素。每一个元素都有自己的位置,这个位置叫做索引。索引是从0开始的。
- ECMAScript数组是没有类型的;
- ECMAScript同一个数组中可以存储不同类型的数据;
- ECMAScript语言中数组的长度是可以动态变化的;
- Array是ECMAScript中常用的引用类型之一。
二、数组的创建
1.方式一 构造函数法
var aColors = new Array();创建了一个空数组;
var aColors = new Array(20);创建了一个容量为20的数组;
var aColors = new Array("red","yellow","blue");创建了一个包含三个字符串元素的数组 注意:最后一个元素不可以加逗号,否则报语法错误!
【课堂练习】解释下面语句什么意思
var aColors = new Array(3);
var aColors = new Array("black");
【注】:使用构造函数创建数组的时候,也可以省略new关键字。
方式二 数组字面量表示法
var aColors = ["red","yellow","blue"];//创建包含3个字符串的数组
var aColors = [];创建一个空数组;
var aColors = [1,2,3,]这种写法不可以,这样会创建一个容量为3或者4的数组
【bug】
在IE8以及之前的版本显示数组的个数是4;在IE9+、firefix、chrome、opera中是3;
不要使用这种方式创建数组。
三、数组元素的读写--索引法
//使用构造函数创建容量为5的数组
var aColors = new Array(5);
//5个数组元素分别是 aColors[0] aColors[1] aColors[2] aColors[3] aColors[4]
aColors[0]="red";
aColors[1]="yellow";
aColors[2]="blue";
使用随机数动态的为数组赋值
var aNums = Array(10);
for(var i = 0; i < 10; i++){
aNums[i] = Math.random();
}
var aColors = new Array(10);
数组的的容量是10个,数组元素是aColors[0]...aColors[9]
aColors[10] = "a";
当数组的下标索引超过了数组的容量时,系统会自动将该数组的容量扩充到index+1的大小
四、获取数组的长度
var aColors = ["red","blue","yellow","white","black","purple"];
alert(aColors.length);
【注】数组的length属性非常有特点--他不是只读的。可以通过数组的length属性向数组的末尾扩大数组的容量,或者从数组末尾移除数组元素。
<script type="text/javaScript">
var aNums = new Array(1,2,3,4,5,6,7,8,9);
alert(aNums.length);
//通过修改length属性值 来增大数组的容量
aNums.length = 20;
alert(aNums);
//通过修改数组的length的值。来删除数组中的元素
aNums.length = 3;
alert(aNums);
</script>
【课堂练习】随机点名程序
五、遍历数组 for循环 for-in forEach(ECMAScript5.0中新增加)
遍历数组就是获取数组中的每一个数组元素
【课堂练习】
1、定义一个长度为100的数组,给数组元素赋值为1-1000的随机整数, 输出是偶数的数组元素。
2、还是上面的数组,输出是质数的数组元素;
六、数组常用的方法
- arr.push(v1,v2...)
- 描述:向数组末尾添加一个或者多个数组元素
- 参数:需要添加的数组元素
- 返回值:数组的长度
- 注意:原数组改变
- arr.pop()
- 描述:从数组的末尾删除一个数组元素
- 返回值:返回删除的元素
- 注意:原数组改变
- arr.unshift(v1,v2...)
- 描述:向数组的头部插入元素
- 参数:需要插入的值
- 返回值:数组的长度
- 注意:原数组改变
- arr.shift()
- 描述:删除数组的第一个元素
- 参数:删除掉的元素
- 注意:原数组改变
- arr.join("+")
- 描述:将数组的值连接成字符串
- 参数:字符串
- 返回值:拼接成的字符串
- arr.reverse()
- 描述:将数组的数组元素倒置
- 返回值:返回原来的数组
- 注意:元数组改变
- arr.concat(v1,v2,v3...)
- 描述:创建一个新数组,新数组的元素是arr数组的全部元素,再加上参数中的元素
- 参数:可以使数组元素,也可以使数组
- 返回值:新数组
- 注意:原来的数组不改变
- arr.slice(start,end)
- 描述:返回数组中一部分
- 参数:开始的位置,结束的位置
- 返回值:数组的一部分
- 注意:start的值必须大于1并且不能小于end的值
- arr.splice(index,howmany,v1,v2...)
- 描述:向数组中添加元素或者从数组中删除元素
- 参数:
- index--必需,规定添加或者删除元素的地方。赋值表示从数组末尾开始
- howmany--必需,要删除项目的个数,如果值为0,则不会删除元素
- v1--可选,向数组中添加新的项目
- 返回值:改变之后的数组
10、arr.toString()
描述:将数组转换成字符串。
返回值:字符串
11、indexOf(v1)
描述:从数组头部查找v1,找到的话返回索引
参数:要查找的数值
返回值:索引,没有找到返回-1
12 lastIndexOf(v2)
描述:从数组尾部查找v1,找到的话返回索引
参数:要查找的数值
返回值:索引,没有找到返回-1
七、数组排序
冒泡排序 (Bubble Sort)算法:(画图解释)
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一轮,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
js数组有自带的排序的函数sort(字符串讲完之后讲)
原理:将数组中每一个数组元素转换成字符串toString();然后进行比较。
0 0
- js数组
- js数组
- JS 数组
- js 数组
- js数组
- JS数组
- js数组
- js 数组
- JS 数组
- js数组
- js 数组
- JS数组
- js数组
- js数组
- js数组
- JS 数组
- js数组
- js 数组
- 强制类型转换
- 数据结构实验之队列一:排队买饭
- [OS复习]进程管理5
- POJ 3280 Cheapest Palindrome(区间DP)
- Android 系统启动详解
- js - 数组
- 关于清华研究生毕业学术写作(一)
- hdoj5792 【树状数组】【未完待续】
- Mybatis与Spring整合
- Hdu-5781 ATM Mechine(DP)
- LVS-DR工作原理图文详解
- Animations的介绍以及用法
- 如何查询手机当前基站编号信息
- android UI线程和非UI 线程