js 数组

来源:互联网 发布:赛睿鼠标sensei淘宝 编辑:程序博客网 时间:2024/06/06 16:32

1.数组的概念:

介绍概念之前,大家先来写一个案例:

计算十位同学的平均分:

   常规思路:

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("请输入第10位同学的分数"));
    var average = (a1+a2+a3+a4+a5+a6+a7+a8+a9+a10)/10;
    document.write(average);

但如果是100人呢?怎么解决?显然是需要使用循环,单但尝试之后显然发现,循环使用不上,究其原因,就是在这里无法控制变量,

也就是无法将循环控制变量和变量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;
 document.write(ave);

这段代码实现了相同的功能,如果计算更多的人数,只需要把循环条件改为1<r人数就可以了,整个程序的结构和代码量、人数没有多少关系。

为什么没有关系呢? 因为该代码成功地和循环结合了起来。

为什么可以和循环结合?因为我们把变量的表示方法改变了,即名称和序号的方式,那么序号是可以云用循环变量去控制。

2.数组的定义与元素访问

定义的方式:

      1.var a = []

      2.var a = new Array();

      3.var a = [1,2,3]

访问元素:

数组名+下标 例:a.[0]

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

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

数组的常用属性和方法:

      属性:Length:1.数组长度;数组名.length
                                2.通过该属性可以改变(定义)数组的长度

数组的常用方法:
1.unshift:在数组的头部添加元素,返回值为新数组的长度
Shift:删除数组头部的元素,返回值是删除的头部元素
2.indexof:查找在数组中重复出现的元素第一次出现的位置,返回值是该元素的下标。
      Lastindexof: 查找在数组中重复出现的元素最后一次出现的位置,返回值是该元素的下标。
3.push:在数组的尾部插入元素,返回值是添加元素后数组的长度。
      pop:从数组的尾部删除最后一个元素,返回值是删除的元素。
4.slice(开始位置的下标,结束位置的下标):提取数组中指定连续的子数组。方法中的参数规律——前包括,后不包括。
5.splice( 剪接 )(开始删除未知的下标,要删除元素的长度,选择插入或替换的内容):前面两个参数定义剪的部分,第三个参数定义接的部分,经过不同的参数组合就可以实现以下三个功能:
功能:
1.删除操作:删除数组中指定位置的任意元素
2.插入操作:在数组中指定位置插入任意元素

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

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

一般我们传递的参数都是数值,字符串等类型的数据,有些时候可能需要传递一个函数,传递函数如下:
var a = [2,4,6,8];
var b = a.map(fun)
alert(b);
function fun(value,index,self){
    return value*value;
}
简写为:
var b = a.map(function(value,index,self){
      self[index] = value * value;
      return value * value;
  });
这就是匿名函数。
最后给大家介绍一个新的循环 for in,用法如下:
 var array = [1,2,3,4];
   array[10] = 10
 for(var j in array){
         sum += array[j];
        alert(sum)
    }
这个是不是比常规的for循环简洁多了?更容易理解。
个人认为他比for循环更大的优势就是常规的for循环,遍历的是下标,比如上面这段代码,如果是常规for循环,下标在5-10之间的并不存在,但是还是被遍历出来了 显示多遍unfined
但这种写法被遍历出来的仅仅是1,2,3,4,10, 并没有多余的无用的数据


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 12个人片诈骗刑拘了28天怎么办 交警拘留几天后还是没钱赔偿怎么办 平安车主信用卡车牌号填错了怎么办 起诉借钱的人逮起来了怎么办 在法院查不到坐牢人的档案怎么办 人被冤枉敲诈勒索进看守所了怎么办 打架被拘留孩子怎么办三周了 技师被拘留她的家人该怎么办 我是担保人贷款人跑了我该怎么办 公司依旷工理由辞退我该怎么办 试工两天被辞退了不发工资怎么办 员工在单位被打监控调不出来怎么办 老师罚做60张试卷家长该怎么办 孩子在幼儿园被老师打该怎么办 孩子被孩子打了老师该怎么办? 法院判决书下来后看守所不收怎么办 因病看守所不收押发院判了怎么办 现在显示还在看守所羁押需要怎么办 嫖了N多年丈夫让我怎么办 预约考试的登录密码忘了怎么办 人进了看守所信用卡没还怎么办 上海租房人放2个麻将台怎么办 南宁公租房住满5年后怎么办 合伙买房时如果出售意见不合怎么办 老旧小区改造下水一楼不同意怎么办 老旧小区下水改造没改怎么办 替公司租房子中介不退押金怎么办 想在昆山找合租房的该怎么办 链家二手房价钱买贵了怎么办 拿私人房产证抵押借钱不还怎么办 在借贷宝里借钱不还怎么办 出租屋的大门感应钥匙弄丢了怎么办 法院拍卖的房子房主不配合怎么办 租的房子如果房主卖了怎么办 房东把门锁换了里面的东西怎么办 房租没到期房东把门锁换了怎么办 租了三年店面房东违反了合同怎么办 学生登录教务系统的密码忘记怎么办 铜陵无牌助力车被交警查到怎么办 福州超标电动车被交警抓到怎么办 单位自管公租房承租人去世怎么办