新建数组
var arr1 = ['red', 'blue'];
var arr2 = new Array(2);
var arr3 = new Array('red', 'blue');
复制代码
检测数组
1.instanceof
if (value instanceof Array) {
// ...
}
复制代码
若在不同的全局执行环境下,可能会出现问题。如,页面中存在两个框架,每个框架有不同版本的 Array 构造函数。
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上
2.Array.isArray()
这是 ES5 新增的检测方法。
转换方法
1.valueOf() - 返回数组本身
2.toString() - 每项调用自己的 toString() 转为字符串,以逗号分隔拼接
3.toLocaleString() - 与 toString() 类似,但每项调用的是 toLocaleString()
4.join() - 与 toString() 类似,但可传入自定义分隔符
栈方法
1.push() - 从尾插入 (数组最后)
2.pop() - 从尾取出 (数组最后)
队列方法
1.shift() - 从头取出 (数组开头)
2.push() - 从尾插入
3.unshift() - 从头插入 (数组开头)
4.pop() - 从尾取出
重排序方法
1.reserve() - 反转
2.sort()
- 若不传参数,则调用每项的 toString() 方法,实际比较的是字符串。
- 若传入回调,则应使得:
- 第一个参数在第二个参数之前,返回负数
- 两参数相等,返回0
- 第一个参数在第二个参数之后,返回正数
操作方法
1.concat() - 拷贝并追加参数中的元素或数组
2.slice(start, end) - 基于当前数组中的一项多项创建一个新的数组,不包括 end
- 若某个参数为负数,则加上数组长度再执行
- 若 end 小于 start,返回空数组
3.splice() - 在原始数组上插入项
- 删除 splice(index, length)
- 插入 splice(index, 0, item1, item2, item3)
- 替换 splice(index, 1, item1, item2)
位置方法
1.indexOf()
2.lastIndexOf()
注意:查找时使用的是全等比较(===)
兼容性:IE9+、Firefox 2+、Safari 3+、Opera 9.5+、Chrome
迭代方法
每个迭代方法可传入两个参数:
- 在每项上运行的函数
- [可选] 运行该函数的作用于对象——影响 this 的值
1.every() & some() - 每一项/某一项返回 true,则返回 true
2.filter() - 返回返回 true 的项目组成的数组
3.forEach() - 仅遍历,无返回值
4.map() - 返回每项的返回值组成的数组
兼容性:IE9+、Firefox 2+、Safari 3+、Opera 9.5+、Chrome
归并方法
1.reduce()
接收两个参数:
- 在每项上调用的函数,四个参数:
- 前一个值 prev,上一项调用函数的返回值
- 当前值 cur
- 项的索引 index
- 数组对象 array
- [可选] 作为归并基础的初始值
2.reduceRight()
从最后一项遍历到第一项
兼容性:IE9+、Firefox 3+、Safari 4+、Opera 10.5+、Chrome
常用操作总结
1. 数组拷贝
- arr.slice(0)
- arr.concat()
- arr.join().split(',')
2. 元素插入头部
- [item].concat(arr)
- arr.unshift(item)
- [].push.apply([item], arr) (利用了 apply 的第二个参数必须是参数数组的特性)
- arr.splice(0, 0, item)
3. 移除头部元素
- arr.slice(1)
- arr.shift()
- arr.splice(0, 1)
4. 元素插入尾部
- arr.concat([item])
- arr.push(item)
- [].push.apply(arr, [item])
- arr.splice(arr.length, 0, item)
5. 移除尾部元素
- arr.slice(0, -1)
- arr.pop()
- arr.splice(arr.length - 1, 1)
欢迎大家指正、补充!