数组的概念以及数组的常规属性

7数组

7.1数组的概念

案例:计算10个同学的平均分

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);

这个程序很简单,但是如果是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 = sum/ a.length;
alert(ave);

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

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

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

为什么要用数组?

处理批量数据的时候,代码量会随着数据量增加而增加,两者成正比

然而数组把变量的表达方式改变了,可以用下标来控制,

7.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已经越界了。

var a = new Array();
a[0]  = 1;
a[1] = 2;
alert(a[0]);
alert(a[2]);

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

处理批量数据,需要首先想到数组

7.3数组常用属性和方法

数组的属性:

length

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

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

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

数组常用方法:

1unshift:在数组头部添加元素,用b=a.unshift(1),alertb,返回的是新数组的长度

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

var a = [2,3,4,5,9] ;
b= a.unshift(7);
alert(b);
alert(a)

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

  如果要输出第一个元素,可以先找到在哪然后输出如:

var b = a.indexOf("爱");
alert(a[b]);

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

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

   pop:在数组尾部删除元素,返回值是删除的元素

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

注意:是左开右闭结尾那个不包括,当只有开始位置下标时,提取子元素一直到最后

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

 5splice:(意思:剪接)

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

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

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

(开始下标,删除下标,添加选择插入或者替换的数)

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

7)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);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值