js之数组

计算5名同学的平均分

<script>
    var a1,a2,a3,a4,a5;
    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 ave= sum/ a.length
alert(ave);

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

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

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

数组的定义与元素访问

怎么用呢?

定义有三种方式“”

(1)var a = [];

(2) var a = new Array();

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

访问元素:数组名+下标

a[0]  a[3]

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

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

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

数组的常用属性和方法:

数组的属性:

length:

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

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

 

数组的常用方法:

(1)unshift:在数组的头部添加元素,返回值返回的是新数组的长度。

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

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

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

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

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

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

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

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

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

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

(6)reverse:将数组中的元素,反序输出。在原数组的基础上进行反序输出,不会重新创建新数组。

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

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

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

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

}


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

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

这就是匿名函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值