JavaScript数组对象

 

 

 

 

1.什么是数组?

数组对象是使用单独的变量名来存储一系列的值

其内部元素可以是不同类型的

js中的数组没有下标越界,比如定义一个数组长度为5:

var arr = ["你好","我好",true,8,12];

arr[9] = "大家好";

console.dir(arr);——>内部元素增加为6,并且其arr.length会被

扩充为10

2.用法:

定义数组:

1.var arr = [];长度为0的空数组

2.var arr = new Array(n);n为你数组的长度

3.var arr = new Array(12,14,"你好");当其中的元素被剪至1个时,

如果是正整数将会变成数组长度

打印数组:

console.log(arr);打印整个数组;与java相比较,java打印输出arr是其内存地址

数组长度:

arr.length

访问数组元素:

数组的下标从0开始给其中每一个元素定位。arr[i] i为下标。

根据下标可以做到很多事:

如:获取最后一个元素:

arr[arr.length-1];

如:在数组末尾追加一个元素:

arr[arr.length] = "数组";

如:删除数组末尾的最后一个元素:

arr.length--;

如:删除数组末尾第n个元素:

arr.length = arr.length-n;

 

遍历数组元素:

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

console.log(drinks[i]);

}

 

3.数组是引用类型的对象

基本数据类型:

基本数据类型的数据直接保存在定义变量所在的内存(windows)中。

两个变量之间赋值时,或者将变量作为参数传入函数式,将自己的值赋值给对方,

不会影响自己的值

引用数据类型:数据无法直接保存在变量所以内存的数据类型(变量和值不能在一起存储)

因为变量只允许保存一个值,二引用类型往往可以同时保存多个值。

引用数据类型的数据会在windows对象之外创建一个独立的存储空间。并且

每个独立的存储空间都有一个唯一的内存地址(0X666十六进制)。变量中保存的是一个

内存地址。每个引用了引用类型数据的变量,修改了其中的数据就等于修改了原数据。

 

null的使用:

有null就想到undefined。undefined一般只有js语言使用,给变量自动赋初始值。

在js中null专门给程序员使用,手动清除一个变量的内容。

什么时候清空一个变量(何时使用null)?

js内存中有一个类似于垃圾回收器的程序,它会记录引用了变量数据的次数,每有一次

引用,垃圾回收器中的count就会增加一次。每设置一个变量值为null,count就会减少

一次。当变量数据没有被引用(也就是所有引用的变量的内存地址变为了null)时,垃圾

回收器就进行回收处理。

注意:使用完一个较大的对象之后,一定要主动清空(手动赋值null),不然内存会很拥挤。

 

4.关联数组:

索引数组是下标从0开始的自然数。

可以自定义下标名称的数组 与索引数组不同。

为什么要用到关联数组呢?

为了让每个元素都有其明确的含义,方便查找、维护和读取

 

 

没有了索引下标如何遍历数组呢?

 

 

5.数组去重

方法一:

 

方法二:

 

如何比较这两种方法的效率?

利用时间函数:记录开始到结尾的时差

console.time("del");//开始时间

console.log(del(arr));//

console.timeEnd("del");//结束时间

 

6.数组API函数(列举较为常用)

 

1.String()-->String()括号中是需要被转换的数组

将数组中每一个元素都转换成字符串,用逗号链接

var arr = [1, 2, 3, 4, 5];

var before = String(arr);

2.join():把数组所有元素放入一个字符串中,用指定的分隔符进行分隔。

语法:arrayObject.join(separator) separator是参数,可选。制定要使用的自定义

的分隔符。如果省略该参数,则会使用逗号作为分隔符。在有些时候,需要我们做

到无缝连接每个元素,可以指定join("");

 

另一种用法:

 

3.concat() 拼接

语法:arrayObject.concat(arrayX,arrayX,......,arrayX) 改参数可以是具体的值也可以是

数组对象。可以是任意个。

返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果

要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

 

4.arr.splice(starti,n) 向数组中删除/添加项目,然后返回被删除的项目。

(必然会删除,可以被添加)

注释:该方法会改变原始数组。

语法:arrayObject.splice(index,howmany,item1,.....,itemX)

index:必需。整数,规定添加/删除项目的位置,使用负数就是从数组末尾开始倒着删除

howmany必需。要删除的项目数量。如果设置为0,则不会删除项目。

item1,...itemX:可选。向数组添加的新项目。

 

 

 

 

添加数组:

 

注释:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改

 

5.sort():用于对数组的元素进行排序。

注意:能够修改原数组

排序是根据Unicode码来排序的。但是可以给其API函数中增加参数改为大小排序。

看图:

 

 

6.push()、pop()、unshift()和shift()搭配使用。

注意:都改变原数组。

push():从数组末尾增加元素。返回新的长度

 

pop():从数组末尾删除元素。返回删除元素的值

 

unshift():从数组开头增加元素。返回新的长度

 

shift():从数组开头删除元素。返回删除元素的值

 

1.栈的两种实现: 后进先出

在js中没有栈,但是有些时候我们需要用到这种概念,可以通过Array对象的API函数来实现

第一种:push()和pop()搭配,后面进后面出

第二种:unshift()和shift()搭配,前面进前面出

2.队列的两种实现:先进先出

第一种:push()和shift()搭配,后面进前面出

第二种:unshift()和pop()搭配,前面进后面出

 

7.二维数组:

什么是二维数组?就是一个数组中,其元素也是数组。

创建:

 

遍历二维数组:

 

 

习题:

1.创建一个可以存放四组数据的二维数组,循环随机录入数据,计算每一组的平均值、总和

 

2.接收并输出某公司某月的考勤和扣款信息,假设公司有5个员工,每个员工的考勤项有上下

班忘打卡、迟到、早退、旷工,其中上下班忘打卡扣款10元/次,迟到和早退扣款为20元/次,

旷工100元/天 (使用二维数组)循环接收输入员工的编号、忘记打卡次数、迟到次数、

早退次数、旷工次数在网页中输出5个员工的考勤信息。

 

3.一家贸易公司有四位销售员,每位销售员负责销售四件商品,编写一个函数,接收每名销售员

销售的各类产品的数量。打印产品销售明细表,明细表包括每类产品的销售总数,以及每位

售员销售的产品数量占总销售的百分比。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值