JavaScript中数组的使用

来源:互联网 发布:淘宝分类怎么没了 编辑:程序博客网 时间:2024/06/05 15:49

数组的概念

案例:计算5名同学的平均分

<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("请输入分数"));
    a6 =Number(prompt("请输入分数"));
    a7 =Number(prompt("请输入分数"));
    a8 =Number(prompt("请输入分数"));
    a9 =Number(prompt("请输入分数"));
    a10= Number(prompt("请输入分数"));
    var ave = (a1+a2+a3+a4+a5+a6+a7+a8+a9+a10)/10;
    alert(ave)
</script>
</html>

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

怎么解决?显示需要使用循环

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

var a=[];
var sum=0;
for(var i=0;i<10;i++){
    a[i]=Number(prompt("请输入分数"));
    sum += a[i];
}
var ave=suma.length;
alert(ave);

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

为什么和人数没有关系呢:因为和循环结合起来

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

 数组的定义与元素访问

怎么用呢?

定义有三种方式:

(1)  var a=[];

(2)  var a=new Array();

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

访问元素:数组名+下标

A(0)a(1)

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

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

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

 数组的常用属性和方法

数组的属性:

Length1.告诉我们数组的长度;数组名.length

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

2.通过该属性可以改变数组的长度,

数组的常用方法:
1.  unshift:在数组的头部添加元素,返回值返回的是新数组的长度

shift:删除数组头部的元素,返回值是删除的头部元素

2.indexOf查找在数组中重负出现的元素第一次出现的位置,返回值该元素的下标(位置)。

lastlndexof:查找数组中重复出现的元素最后一次出现的位置,返回值是该元素的下标

3.push:在数组的尾部插入元素,返回值是添加元素后数组的长度

pop:从数组的尾部删除最后一个元素,返回值是删除的元素

4.slice(开始位置的下标,结束位置的下标):提取数组中指定连续的子数组。

var a=["","","","","","","","","",]
var ba.slice(2,4);
alert(b);

前包括,后不包括

5.splice开始删除位置的下标,要删除元素的长度,要选择插入或替换的内容)。Splice有“剪接”的含义,【也就是有“加”有“减”】前面俩个参数定义“剪”的部分,第三个参数定义“接”的部分,经过不同的参数组合就可以实现以下三个功能

1.删除操作:删除数组中指定的任意元素

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

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

6)reverse:将数组中的元素,反序输出。在原数组的基础上进行反序输出,不会重新创建数组。
7)map:原数组的映射,经过函数的加工,返回给一个新的数组。

var b= a.mapfunction(value,index,self)匿名函数

一般我们传递的参数都是数值、字符串等类型的数据,有些时候可能需要传递一个函数,那么如何去传递一个函数呢?

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) {
/!*self[index]=value*value;//平方*!/
       return value*value;//新数组
    })
    alert(a);
    alert(b);

这是匿名函数