数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整
----创建方式
实例化创建
var arr = new Array(3); 创建长度为3的数组 每一项都为empty
arr = new Array(1,2,3,4); [1,2,3,4]
通过字面量创建数组
var arr = [1, 2, 3, 4];
----属性及获取元素
length 数组的长度
通过下标索引获取数组元素 arr[0]...
----数组遍历
1.采用for循环
for(var i=0;i<arr.length;i++){}
2.for in 循环
for(var key in arr){} key为下标
for in循环的索引为字符串型数字 不能直接进行几何运算;遍历顺序不固定;for-in会遍历数组所有可枚举属性,包括原型
3.for of 循环
for(var key of arr){}
顺序固定 也不会遍历出所有可枚举属性
----数组元素赋值
1.直接字面量
var arr = ['a','b','c'];
2.下标获取元素后赋值
arr[2] = 'kk'
arr[8] = 'oooo' 给下标为8的元素的赋值 如果跨位了 空位显示empty
----数组基础方法
--isArray(obj)
Array.isArray([1,2,3])
判断是否是数组 如果是Array返回true 否则返回false
--join(separator)
var arr = [1,2,3,4];
arr.join('-'); // “1-2-3-4”
将数组的所有元素连接成一个字符串并返回该字符串 如果数组length为0 则返回空字符串 如果一个元素为undefined或null 那么它会被转换为空字符串
separator 分隔符
--push(element1,...,elementN)
将一个或多个元素添加到数组末尾 返回该数组的新长度
var arr = [1,2,3]
arr.push(4); arr.push(5,6,7);
--unshift(element1,...,elementN)
将一个或多个元素添加到数组的前端 返回该数组的新长度
arr.unshift(9)
--pop()
从数组中删除最后一个元素 返回删除的元素 如果数组为空则返回undefined
arr.pop()
--shift()
从数组中删除第一个元素 返回删除的元素 如果数组为空则返回undefined
arr.shift()
--slice([begin[, end]])
切割数组 返回一个新的数组对象 不改变原数组
arr.slice(2, 4)
arr.slice(2)
如果不传参 默认切割整个数组;如果end不传 则从索引为begin的元素一直提取到数组末尾;如果end传了 则从索引为begin的元素提取到索引为end的元素(包含begin,不包含end);如果end大于数组的长度也会一直提取到数组末尾
--concat()
合并两个或多个数组 返回合并后的新数组
var newArr = ['a','b']
arr.concat(newArr);
--indexOf(element,fromIndex)
在数组中查到给定元素的第一个索引 如果存在返回索引 不存在返回-1
fromIndex如果传了则从fromIndex开始查找 如果fromIndex不传则从索引为0开始查找
arr.indexOf('b')
----排序
--冒泡排序
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数
3.针对所有的元素重复以上的步骤,除了最后一个
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
--选择排序
--插入排序
----数组引用
数组属于对象object的一种 属于引用类型
非引用关系的基础类型 在进行直接赋值的时候 会将赋值变量对应栈内存中空间所存储的值赋值给被赋值变量左边
引用类型进行直接变量赋值操作时 因为数组为引用类型 内容存储于堆内存中 栈内存中只存储了数组的指针 所以数组变量直接作为赋值时是将栈内存的指针赋值给了接收变量
----字符串基础方法
--charAt(index)
从字符串中返回指定的字符
--indexOf(element, fromIndex)
返回在字符串中可以找的给定字符的第一个首字对应索引 如果不存在返回-1
fromIndex 从指定索引开始查找
--split(separator)
将字符串根据指定分隔符分割成字符串数组 返回切割成的数组
var str = 'hello, world, haha';
var arr = str.split(',') // ['hello',' world',' haha']
--slice(begin, end)
提取字符串的一部分 返回一个提取的字符串 不改变原字符串
begin起始索引 end结束索引 包含起始索引不包含结束索引
--trim()
去掉字符串两端的空白字符 返回去掉了空白字符的新字符串