3_1_2.JS--数组

数组

数组的创建
数组,是一种保存批量数据的数据结构。
程序=数据+算法
数据,就是数据结构,指数据在内存中的存储结构
算法,就是流程控制,指程序的执行流程
好的数据结构可以极大的提高程序的执行效率
在一个程序开始之前,首先要考虑数据怎么存储,然后再去思考程序如何执行。

<script>
//使用new Array()
	var arr = new Array();//创建一个空数组
	var str = new Array("a","b","c");
	var num = new Array(1,2,3);
	var user = new Array("name","sex",18);
	var arr2 = new Array(5);//长度为5的空数组

//使用[]
	var arr3=[];
	var arr4 = [5]//长度为1,值为5
</script>

数组的访问
数组中每一个数据,都称为一个元素
每个元素都有一个唯一的序号,称为下标
默认情况下, 下标从0开始,且不重读
可以通过元素所在位置(下标)来访问每一个数组元素
arr[i]:获取数组arr中下标为i的元素内容

length属性
默认情况下,length表示数组的长度,即数组中元素的个数。
length永远等于最大下标+1;
length-1永远指向最后一个元素的位置
所以获取最后一个元素:arr[arr.lenth-1];
同理,获取倒数第n个元素:arr[arr.length-n]

练习:录入刚入学的学生姓名

<script>
var arr=[];
	do{
		var str=prompt("请输入新入学的学生姓名:");
		if(str=="exit")break;
		arr[arr.length]=str;
	}while(true)
	console.log(arr);
</script>

关联数组
下标为数字的数字又称为索引数组,想要查找数据不方便,例如,查成绩不知道哪门课的成绩在下标为几的位置存放。
关联数组:可自定义下标的数组,但是length始终为0,且不常用关联数组,对象Object数据类型可替代解决这种问题,因此还是使用索引数组。
注意:自定义的下标与变量名命名规范相同。

数组的遍历
指依次访问数组中的每一个元素
for循环:根据下标递增遍历数组

<script>
//把下列数组中能被3整除的数存放到一个新的数组并输出。
var numbers=[3,6,44,68,21,43,12];
var numbers2=[];
for(var i=0;i<numbers.length;i++){
	if(numbers[i]%3==0){
		numbers2.push(numbers[i]);
	}
}
console.log(numbers2);
</script>

for-in:当数组为关联数组时,下标不是有序的0、1、2。。。因此使用for-in声明遍历数组。

<script>
//为此关联数组中的每一项增加10%,保留小数点后两位。
var arr=[];
arr["a"]=1000;
arr["b"]=2000;
arr["c"]=3000;
arr["d"]=4000;
for(var key in arr){
	arr[key]*=(1+0.1);
	arr[key]=arr[key].toFixed(2);
	console.log(arr[key]);
}
</script>

二维数组

创建遍历数组

<script>
	//创建一个二维数组,保存省份中的城市
	var arr=[
		["山东","济南","青岛"],
		["广东","广州","深圳"],
		["江苏","苏州","无锡"],
		["河北","石家庄","邯郸"],
		["河南","郑州","开封"]
	];
	//遍历数组并打印表格
	var str="";
	str+="<table border='1'>";
	for(var r=0;r<arr.length;r++){
		str+="<tr>";
		for(var c=0;c<arr[r].length;c++){
			str+="<td>"+arr[r][c]+"&nbsp"+"</td>";
		}
		str+="</tr>";
	}
	str+="</table>";
	document.write(str);
</script>
//table tr td 统一放在一个空字符串中,当数据全部加载完成后统一添加,防止数据过多时,出现表格打印不全的情况。

在这里插入图片描述

数组的传递

数组的数据类型为引用数据类型,即:数据保存在内存之外,赋值给变量的值是指向该数组的地址
与原始数据类型一样,他也是按值传递,但这个值是地址
举个例子:
var a=1;
var b=a;
var b=2;
这样更改b的值是不会改变a的值的。因为他是按值传递
var arr1=[1,2,3];
var arr2=arr1;
var arr2[0]=0;//修改了数组中的某一项数据
这样会改变arr1中的值,因为arr1与arr2存储地址是一样的,所以修改arr2中的内容,也会影响arr1中的内容
但是,如果是:
var arr2=0;这样就不会影响,这个表示重新给arr2数组赋予了一个全新的值,也就是重新get一个新地址来存放arr2中的这个0值

数组API

application programming interface 应用程序编程接口。
已经写好的,可以直接拿来调用的函数/方法,这些函数可以实现特定的功能。
数组,提供了很多操作数组中数据的api,简化了操作数组的过程。
join():将数组中的所有元素连接为一个字符串,返回一个字符串
concat():拼接数组,将当前数组和其他元素或数组拼接成一个新数组,即不改变原数组,返回新数组
slice():选取当前数组中指定开始到结束的元素,组成新数组并返回
splice():删除元素,并向数组中添加新元素,返回被删除的元素组成的数组,修改原数组
reverse():颠倒数组中的元素顺序,修改原数组
sort():对数组中的元素进行排序,默认将数组元素转为字符串,按unicode编码升序排列修改原数组
push():向数组末位添加一个或多个新元素,返回新长度
pop():删除数组最后一个元素,返回被删除的元素
unshift():向数组开头添加一个或多个元素, 返回新长度
shift():删除数组第一个元素,返回被删除的元素

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值