数组
数组是一种常用的保存批量数据的数据结构。
JS中数组元素类型可以不同
元素按线性顺序排列
可以通过元素所在位置的序号(下标)访问元素(下标从0开始,到元素个数-1)
数组定义
1、定义一维数组
[]直接量:[1,2,3]
Array关键字:new Array('Tom','Jerry')
异同:多数情况下两种方式是一样的,但如果给Array方式传递唯一一个数字参数时,其代表的是数组长度而非添加元素。
2、初始化
arr[0]=1;arr[1]='abc';
3、数组是引用类型对象
值不保存在变量本地的数据类型

4、什么是对象?js中的对象,指内存中集中保存一组数组和功能的整体。对象中保存常用数据和操作方法。
5、如何创建对象?对象都是用new关键字创建的
6、什么是new关键字?new专门用于在内存中动态开辟存储空间,然后返回空间的地址
使用new创建出的对象都是引用类型的。
7、数组赋值给变量,得到的是地址
8、数组作为参数传递给函数,也是按值传递,传递的是数组的地址,因此函数中对数组所做修改可以影响数组本身。
null
什么是null?null表示一个变量不再指向任何对象地址
null和undefined?
共同点:都是原始类型,保存在栈中变量本地。
不同点:undefined表示标量声明过但未被赋值。null表示一个变量暂时没有引用任何对象,但是将来可能指向一个对象。
访问数组
设置值:score[0]=98;
获取值:var cities=['洛阳','郑州'];cities[1]
获得长度:cities.length;new Array(10);
遍历数组:
使用for循环遍历
倒序和跳序遍历
使用for...in语句遍历:可遍历数组索引
数组中的常用方法:
1、获取数组字符串
toString()
join([seperator])括号里分隔符
2、连接数组
concat(),拼接若干数组为一个数组并返回
语法:concat(arr1,arr2,.....)
该方法不会改变现有数组,紧返回拼接后的副本
每个参数可以是一个值,也可以是数组
可以使用任意个参数
3、获取子数组
slice()返回现有数组的子数组
语法slice(start,[end])
start是起始索引,end是结束,但是end不被包含在内,即大于等于start,小于end
end不设置取到数组结尾
可取负数,负数从后往前计算,从-1起始,而非0
如果start<=end,提供索引参数错误,得到空数组,但不会报错
该方法不会改变现有数组
4、修改数组
splice()可从数组删除部分元素或者添加部分元素,或两者的组合
语法:splice(start,deleteCount,e1,e2.....)
start表示起始索引
deleteCount表示删除元素数量,设为0表示不删除,返回结果是删除元素组成的数组
e1,e2...表示添加的项,数量不限,类型不限,如果添加元素是数组,则其会作为一个整体,数组长度仅增加1
原始数组会被改变
5、倒转方法
reverse()颠倒数组中所有元素
用法:arr.reverse()
原始数组会改变
6、数组排序
sort()用于对数组中元素由小到大进行排序
语法:arr.sort([sortBy])
若未指定参数,则按照元素的Unicode码序排序,由小到大(阿拉伯数字,大写,小写字母,中文),首字母比较,如果相同再比较第二个。。。;
若指定sortby函数,则按照其返回的正负值作为排序依据
7、 进出栈操作
栈(Stack):典型的"后进先出"型数据结构
a、入栈(push):在栈顶(数组尾部)添加元素
arr.push(val) <==> arr[length]=val;
push返回当前数组长度
可以push多个元素
可以push数组,但是作为整体添加,len加1
b、出栈(pop):
语法:arr.pop()
返回弹出对象
c、unshift(val)和shift():在数组头部添加或删除元素
arr.unshift(val)入队
arr.shift()出队
网友评论