摘要:JavaScript中的数组总结
认识数组
JavaScript中的数组属于动态数组,即定以后可以修改数组长度
从数组的下标类型可以分为索引数组、关联数组。索引数组即下标从0开始递增,关联数组的索引则为指定的字符串
数组的元素:
1.数组内可以存放任意类型的数据
2.数组元素不赋值,则是undefined
3.遍历数组时,如果某个元素没有赋值就会跳过
4.访问数组范围以外的元素时,不会出现越界异常,为undefined;
5.定义的数组很小,依然能够添加更多的元素
数组的创建
创建数组的基本方式有两种:
1 | // 使用 Array 构造函数,new 可省略 |
数组检测
Array.isArray 方法判断是否为数组
1 | var arr = [1, 2, 3]; |
实例方法
会改变原数组的方法:
1.push 方法向数组末端添加元素,返回新数组长度
1 | var arr = [1, true, "string"]; |
2.pop 方法删除数组最后一个元素并返回该元素
1 | var arr = [1, true, "string", 1, false]; |
3.shift 方法删除数组第一个元素并返回该元素
1 | var arr = [1, true, "string", 1]; |
4.unshift 方法在数组首部添加元素,返回新数组长度
1 | var arr = [true, "string", 1]; |
5.reverse 方法颠倒数组中元素的顺序
1 | var arr = [2, false, true, "string", 1]; |
6.splice 方法删除原数组一部分元素,并可以在删除的位置上添加新元素,返回被删除的元素,可以操作数组删除、替换、插入元素。不传递第二个参数,则删除从起始索引到数组结尾所有元素
1 | // splice(起始索引[, 截取个数, 插入的任意个元素]) |
7.sort 方法对数组成员进行排序,默认按照字典顺序排序
1 | var arr = [1, 2, 3, 11, 12, 21, 43, 78, 100, 101]; |
不会改变原数组的方法:
1.valueOf 方法返回数组本身
1 | var arr = [1, true, "string"]; |
2.toString 方法返回数组元素之间添加逗号合并成的字符串
1 | var toString = arr.toString(); |
3.join 方法以参数为分隔符将数组成员组成字符串返回
1 | var join1 = arr.join(); |
4.concat 方法连接一个或多个数组的成员,并返回新数组,原数组不变。如果参数不是数组,就将值依次添加到数组末尾
1 | var concat = arr.concat(4, 5, ["Object", "Number", [false, "length"]]); |
5.slice 方法用于提取原数组的一部分返回一个新数组,可以将类似数组的对象(拥有 length 属性如函数的 arguments 对象、大多数 DOM 元素集、字符串)转为真正的数组
1 | // slice([起始索引[, 截止索引]]) 起始索引默认为 0,但不包含截止索引上的元素,如果索引位置上是负数,则应该加上数组长度 |
6.indexOf 方法返回在该数组中第一个找到的元素位置,如果它不存在则返回 -1,第一个参数是要查找的元素,第二个可选参数是查找的起始索引,如果索引负数,则应该加上数组长度
1 | var arr = [1, 2, 2, 3]; |
7.lastIndexOf 与 indexOf 相似,只不过他是从后向前查找
1 | var arr = [1, 2, 2, 3]; |
8.forEach 方法遍历数组所有成员不能中断跳出,无返回值
1 | arr.forEach(function(value, index, arr){ // 值,索引,数组本身 |
9.map 方法对数组成员依次调用一个函数,根据函数结果返回一个新数组
1 | var map = arr.map(function(value, index, arr){ |
10.filter 方法的参数是一个函数,所有数组成员依次执行该函数,返回结果为 true 的成员组成一个新数组
1 | var filter = arr.filter(function(value, index, arr){ |
11.some 方法接收一个函数微参数,所有成员依次执行该函数,返回一个布尔值,只要有一个为 true,该方法就返回 true
1 | var some0 = arr.some(function(value, index, arr){ |
12.every 方法类似 some 但要所有成员返回的都是 true,该方法才返回 true
1 | var every0 = arr.every(function(value, index, arr){ |
13.reduce 方法从左到右依次处理数组每个成员,最终累计为一个值。第二个参数是初始值 prev,不设置初始值 index 从 1 开始,否则从 0 开始
1 | var arr = [1, 2, 3, 4, 5]; |
14.reduceRight 方法与 reduce 类似,但它是从右到左依次处理数组每个成员,最终累计为一个值
1 | var arr = [1, 2, 3, 4, 5]; |
《JavaScript高级程序设计》(第三版)第5章 引用类型
Array 对象