学习JS的第6天

学习JS的第6天

一、数组

1.什么是数组?

数组的概念(标准定义):数组是一个可以存储一组或一系列相关数据的容器。

​ 作用:用于在单个的变量中存储多个值。

2、数组的创建

1、字面量形式

var arr = [ '张三',18,'男','rap'];

2、使用构造函数的方式

var arr = new Array(); //这是空数组

var arr = new Array("张三","男",24,"未婚","本科","北京大学"); 

注意点:数组元素的值,可是任何类型。如:字符型、数值型、布尔型、数组型、对象型、函数、对象型。

3、数组的索引

a、数组中有多个值,每个值都有一个”编号”,通过”编号”可以访问到数组中的每个值,数组中的”编号”又称”下标”或”索引号”。

b、数组中的”下编号”是从0开始的正整数。也就是说:第1个数组元素下标为0,第2个数组元素下标为1,

第三个数组元素下标为2,以此类推。

c、第1个数组元素下标一定是0,最后一个数组元素的下标是:长度-1

d、使用数组的目的,就是使用循环遍历数组很方便。

4、数组的元素访问与长度
数组元素的访问 例如:

var arr=[10,20,30,40,50];

var arr=["张三","男",24,"本科","北京大学"];

//访问的方法是:数组变量名,后跟一个中括号[],[]中括号内是数组元素的下标。如:arr[3];

//数组的长度 数组名.length  例如arr.length 
5、数组的操作
1)读取元素:读取已经存在下标的元素。如:var age = arr[2];

2)修改元素:修改已经存在下标的元素的值(重新赋值)。如:arr[2] = 25;

3)增加元素:添加一个不存在的下标的元素。

4)删除元素:使用关键字delete,只能删除元素值,而下标还在。

实例:使用数组保存个人信息,并输出结果。
6、数组的遍历

1)普通for循环

var arr6 = [1, 2, 3, 4, 5, 6];

alert(arr6);

顺序遍历

for(var i = 0; i<arr.length; i++)

{
     alert(arr6[i]);
 }

逆序输出

for(var i = arr.length-1; i>=0; i--)

{
     alert(arr[i]);
}

2)for…in 语句用于遍历数组或者对象的属性(快速遍历) 作用:只能遍历数组和对象

语法:for(变量 in 集合) 集合:数组名和对象名

for(var i in arr)
{
    alert(arr[i]);
}

7、数组的方法
shift():删除数组中第一个元素,并将长度减1.

pop():删除数组中最后一个元素,并将长度减1.

unshift():往数组前面添加一个或多个数组元素,长度要改变。如:arrObj.unshift(“a”,”b”,”c”);

push():往数组结尾添加一个或多个数组元素,长度要改变。如:arrObj.push(“a”,”b”,”c”);



concat() : 方法用于连接两个或多个数组, 不改变原数组。返回一个新的数组。

reverse()  逆向排序, 原数组也被逆向排序了

toString()  将数组转成字符串 //toString();里面的参数用于进制转换。如toString(2) 转换2进制

join(“拼接符”)将数组转成字符串,中间以拼接符连接 
slice(start,end):  不修改原数组, 将原数组中的指定区域数据提取出来。start开始 end结束。 如果参数是负值表示从倒数开始。不含结束位置

splice 
删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)

插入:向数组指定位置插入任意项元素。三个参数,第一个参数(开始位置),第二个参数(0),第三个参数(插入的项)

注意点:第二个参数(0)为0不会删除任何项

替换:向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)

练习:

要求将数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组

var a = [1,3,0,4,0,0,5,2];
	function qu0(arr){
		var newArr = []; //创建一个新的数组
			for (var i = 0; i<arr.length;i++ ) {
					if (arr[i] != 0) {   // 判断不为0 
					newArr.push(arr[i]);  //依次添加到新的数组
					}
				}
				return newArr ;
			} 
var  res = qu0(a);
console.log(res);

二、拷贝传值与引用传址

1、拷贝传值:将一个变量的值"拷贝"一份,传给了另一个变量

var a=10;//声明变量

var b=a;//将变量a的值"拷贝"一份,赋给变量b

a=100//重新给变量赋值100

console.log(b);//10

console.log(a);//100

拷贝传值:基本数据类型都是"拷贝传值"。

拷贝传值,就是将一个变量的值"拷贝"一份,传给了另一个变量。也可以说是复制。

拷贝传值中,两个变量之间没有任何联系,修改其中一个变量的值,另一个不会改变。

这两个变量之间,是相互独立的,没有任何联系。

基本数据类型存在"快速内存"(也叫栈内存)中的。因为,基本数据类型只有一个变量名和一个变量值。

2、引用传址:复合数据类型都是"引用传地址"

复合数据类型的存储分两步:

a、将变量名和数据地址存"快速内存"(也叫栈内存)中。

b、具体的数据存在"慢内存"(也叫堆内存)中。

引用传址:将一个变量的数据地址,“拷贝"一份,传给了另一个变量。这两个变量,指向"同一个地址”。

大家共享同一份数据。

如果其中一个变量的值发生了改变,那么,另一个变量的值也得变。要变一起变。

因此,这两个变量是有联系的,要变大家一起变。

var arr = ["小帅",18];

var newArr = arr;//将arr的地址,"拷贝"一份,传给了另一个变量newArr

arr[0]='大帅';    //给变量arr[0]重新赋值

alert(newArr[0]); //newArr[0]='大帅'

栈区(stack)

堆区(heap)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值