JS数组
来源:互联网 发布:女生做淘宝美工累吗 编辑:程序博客网 时间:2024/06/03 21:01
数组
案例:计算5名同学的平均分
<script>
/*
* 计算五名同学的平均分
* (1)提供并输出五名同学的成绩
* (2)成绩相加除以5等于他们的平均分
* */
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联系起来。
<script>
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);
</script>
这段代码能够实现同样的功能,而且如果是100人的话,只要把循环的条件改为i<100即可,整个过程的结构和代码量和人数多少没有关系
为什么和人数没有关系?因为和循环结合起来了。
为什么能和循环结合起来?因为我们把变量的表达方式改变了,既名称序号的方式(a[0],a[1]……),那么序号是可以用循环变量去控制
当我们处理初量的时候,我们所敲的代码是和数量是成正比的,所以我们用数组。
2.数组的定义和访问元素
定义有三种
(1)var a = [];
(2)var a =newArray();
(3)var a =[0,0,0];
访问元素:数组名+下标
a[0] a[3]
需要注意下标是从0开始的。
所以在使用的时候需要注意越界问题,比如5个元素的数组,那么他的下标范围就是[0,4],不包括5,5已经越界了。
数组的本质:一组变量的集合,或者说是一组内存单元。只不过对于变量的表达方式使用的是数组名+下标
3.数组的常用属性和方法
数组的属性:
Length:
(1)告诉我们素组的长度;写法:数组名.length
(2)通过该属性可以改变数组的长度
var a =[1,2,3,4,5,6,7];
a.length = 5;
alert(a);
数组常用的方法:
(1)unshift在数组的头部添加元素,返回值返回的是新数组的函数
var a =[2,3,4,5,6];
a.unshift(1); //添加元素
var b = a.unshift(1); //查看数组的长度
alert(a);
alert(b);
shift:删除数组头部的元素,返回值是删除头部的元素。
var a =[2,3,4,5,6];
var c =a.shift(1);
alert(a);
alert(c);
(2)indexOf:查找在数组中重复出现的元素,第一次出现的位置,它的返回值是该元素的下标。
<script>
var a =["我","爱","中","国","也","爱","我","自","己"];
var b = a.indexOf("爱");
alert(a);
alert(b);
</script>
lastIndexOf:查找数组中重复出现的元素,最后一次出现的位置,它的返回值是该元素的下标。
<script>
var a =["我","爱","中","国","也","爱","我","自","己"];
var b = a.lastIndexOf("爱");
alert(a);
alert(b);
</script>
(3)push:在数组的尾部插入元素,返回值是添加元素后数组的长度。
<script>
var a =["我","爱","中","国","也","爱","我","自","己"];
var b = a.push( "!","#");
alert(a);
alert(b);
</script>
pop:从数组的尾部删除最后一个元素,返回值是删除的元素。
<script>
var a =["我","爱","中","国","也","爱","我","自","己" , "!","#")];
var c = a.pop();
alert(a);
alert(c);
</script>
(4)slice(开始位置的下标,结束位置的下标):提取数组中指定连续的子数组。只能提取一个连续的子数组。结束位置的下标就是前包括,后不包括。
<script>
var a =["我","爱","中","国","也","爱","我","自","己"];
var b = a.slice(2,4);
alert(b);
</script>
(5)splice(开始删除位置的下标,要删除长度的元素,要选择插入或者替换的内容),splice有剪接的含义。前面;两个参数定义“减”的部分,第三个参数定义“接”的部分,经过不同的参数组合就可以实现以下三个功能。
1) 删除操作:删除数组中指定的任意元素。
var a =["我","爱","中","国","也","爱","我","自","己"];
a.splice(4,5);
alert(a);
2) 插入操作:可以在数组中指定位置插入元素。
var a =["我","爱","中","国"];
a.splice(3,0,"华","人","民","共","和");
alert(a);
3) 替换操作:在数组中替换指定位置的元素
var a =["我","爱","中","国"];
a.splice(2,2,"自","己"); //第一个是从哪一个字的下标开始,第二个数字是删除几个
alert(a);
(6)reverse:将数组中的元素反序输出。在原数组的基础上进行反序输出,不会重新创建一个新的数组。
<script>
var a =[1,2,3,4];
var b =a.reverse();
alert(a);
alert(b);
</script>
(1)map:原数组的映射,经过函数的加工,返回给一个新的数组。
<script>
var a = [2,4,6,8];
var b = a.map(function (value) {
return value * value;
});
alert(a);
alert(b);
</script>
一般我们传递的参数都是数值、字符串等类型的数据,有些时候可能需要传递一个函数,那么如果去传递一个函数呢?
var a = [2,4,6,8];
var b = a.map(fun);
function fun(value,index,self) {
returnvalur*value;
}
我们可以将以上内容简写为:
var a = [2,4,6,8];
var b = a.map(function (value) {
return value * value;
});
这就是匿名函数
for in 循环
在我们给那的数组元素的时候,我们给他几个,他就会循环几次,
如果用for循环的话,他会根据下标的多少循环多少次
For in :好处,简洁
var array =[1,2,3,4,5,6];
var sum =0;
array[10]=10;
alert(array);
for(var i =0; i< array.length; i++){
alert(array[i]);
sum +=array[i];
}
alert(sum);
上面是普通的循环,下面是for in循环,明显简单了很多。
var array =[1,2,3,4,5,6];
var sum =0;
array[10]=10;
alert(array);
for(var j in array){
alert(array[j]);
sum +=array[j];
}
alert(sum);
- js数组
- js数组
- JS 数组
- js 数组
- js数组
- JS数组
- js数组
- js 数组
- JS 数组
- js数组
- js 数组
- JS数组
- js数组
- js数组
- js数组
- JS 数组
- js数组
- js 数组
- Nginx与Apache的突出的优缺点比较
- python基础学习
- 简单聊天室socket.io实现
- Trie(前缀树,字典树)
- JS 实现遍历某一磁盘文件夹下目录的功能
- JS数组
- Linux进程间通信之POSIX共享内存
- 【Java并发编程实战】----- AQS(一):简介
- 关于'CALayer position contains NaN: [nan nan]'异常
- 循环结构
- NOIP总结
- 骑电动车到郑州市区一
- 数独解法编程C++
- Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position conta