JS基础--数组

来源:互联网 发布:淘宝法院拍卖流程 编辑:程序博客网 时间:2024/06/04 20:58

1 数组的概念

<script>
    var a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
    a1 = Number(prompt("请输入分数:"));
    a2 = Number(prompt("请输入分数:"));
    a3 = Number(prompt("请输入分数:"));
    a4 = Number(prompt("请输入分数:"));
    a5 = Number(prompt("请输入分数:"));
    var ave = (a1+a2+a3+a4+a5) / 5;
    alert(ave);
</script>

上面这个程序很简单,但是如果是100人呢?难道要真的复制100遍?

显然需要循环

但是试着尝试一下就会发现,循环是用不上,因为无法去控制变量a1,a2,也就是无法将循环控制变量和变量a1、a2联系起来。

var a = [];
var sum = 0;
for(var i=0; i<5; i++){
    a[i] = Number(prompt("请输入分数:"));
    sum += a[i];
}
var vae = sum/ a.length;
alert(vae);

这段代码能够实现同样的功能,而且如果是100人的话,只要把循环的条件改为i<100即可,整个程序的结构和代码量和人数多少没有关系。

为什么和人数没有关系?因为和循环结合起来了。

为什么能和循环结合起来?因为我们把变量的表示方式改变了,即名称+序号的方式(a[0],a[1]……),那么序号是可以用循环变量去控制。


2 数组的定义

定义有三种方式

(1)  var a = [];

(2)  var a = new Array();

(3)  var a = [0,0,0];

访问元素:数组名+下标  如:a[0], a[3]

 

需要注意的是下标是从0开始

所以在使用的时候需要注意越界问题,比如5个元素的数组,那么它的下标范围为[0,4],不包括5, 5已经越界了。

 

数组的本质:一组数据(变量)的集合,或者说是一组内存单元;只不过对于变量的表示方式使用的是数组名+下标的方式。


3 数组的常用属性和方法

数组的属性:

Length:

(1)  告诉我们数组的长度:数组名.length

(2)  通过该属性可以改变数组的长度

 

数组常用的方法:

Unshift

(1)  向一个数组的头部送入元素

(2)  返回值返回数组的长度

Shift:

(1)  从数组的头部删除元素

(2)  返回值返回删除的头部属性

 

indexOf:

(1)查找在数组中重复出现的元素第一次出现的位置

(2)返回值是该元素的下标

lastIndexOf:

(1)  查找数组中重复出现的元素最后一次出现的位置

(2)  返回值是该元素的下标

 

push

(1)  向数组的末尾送入一个或更多元素

(2)  返回值是新的数组长度

pop

(1)  从数组的尾部删除最后一个元素

(2)  返回值是删除的元素

 

 

Slice:(开始位置的下标,结束位置的下标):提取数组中指定连续的子数组。前包括,后不包括。

 

splice有“剪接” 的含义,前面两个参数定义“剪”的部分,第三个参数定义“接”的部分,经过不同的参数组合就可以实现以下三个功能:

Splice:(开始删除位置的下标,要删除元素的长度,要插入或替换的内容)删除操作:删除数组中指定的任意元素

1.  插入操作:在数组中指定位置插入元素

2.  替换操作:在数组中替换指定位置的元素。

 

revers:将数组中的元素反序输出.在原商户组的基础上进行反序输出,不会重新创建新数组。

 

map:原数的映射,经过函数的加工,返回给一个新数组。

一般我们传递的参数都是数值、字符串类型的数据,有些时候可能需要传递一个函数,如下:

var a =[2,4,6,8];
 var b = a.map(fun);

 function fun(value,index,self){
     return value * value;
 }
 alert(b);

我们可以将以上内容简写为:

var a =[2,4,6,8];
var b = a.map(function (value,index,self){
    return value * value;
});
alert(a);
alert(b);

这就是匿名函数。


原创粉丝点击