- 静态方法
Array.isArray():返回一个布尔值,用来判断参数是否为一个数组。var arr = [1, 2, 3]; typeof arr // "object" Array.isArray(arr) // true
- 实例方法
- valueOf()
var arr = [1, 2, 3]; arr.valueOf() // [1, 2, 3]
- toString()
var arr = [1, 2, 3]; arr.toString() // "1,2,3" var arr = [1, 2, 3, [4, 5, 6]]; arr.toString() // "1,2,3,4,5,6"
- push()和pop():后进先出(stack:栈),数组尾部操作,改变原数组
- push(value):返回值是数组变更后的长度
- pop():返回被pop出来的元素。
- shift()和unshift():先进先出(queue:队列),数组头部操作,改变原数组
- shift():返回被删除的元素。
- unshift(values):返回值是数组变更后的长度
- join():接收指定参数作为分隔符,默认为逗号,原数组不变
- 当值为undefined或null时,自动转成空字符串
- concat():合并数组或对象,得到新的数组,数组尾部添加,原数组不变
var x =[].concat({a: 1}, {b: 2}) x// [{ a: 1 }, { b: 2 }] 也可以视为浅拷贝
- reverse():颠倒数组,返回改变后的数组,改变原数组
- slice(start, end):截取数组的一部分,返回新数组,原数组不变
var a = ['a', 'b', 'c']; a.slice(0) // ["a", "b", "c"] a.slice(-2) // ["b", "c"] a.slice(-2, -1) // ["b"] a.slice(4) // [] a.slice(2, 1) // []
- splice(start, count, addElement1, addElement2, ...):删除或添加数组的一部分,返回被删除的元素或空,改变原数组
正常使用 var x = ['a', 'b', 'c', 'd', 'e', 'f']; x.splice(4, 2) // ["e", "f"] x // ["a", "b", "c", "d"] 指定位置删除并添加新元素 var y = ['a', 'b', 'c', 'd', 'e', 'f']; y.splice(4, 2, 1, 2) // ["e", "f"] y // ["a", "b", "c", "d", 1, 2] 参数为负数 var a = ['a', 'b', 'c', 'd', 'e', 'f']; a.splice(-4, 2) // ["c", "d"] 单纯添加新元素 var a = [1, 1, 1]; a.splice(1, 0, 2) // [] a // [1, 2, 1, 1] 拆分数组 var a = [1, 2, 3, 4]; var b = a.splice(2) // [3, 4] a // [1, 2] b // [3,4]
- sort():将数组成员按照字典顺序(将数组成员转化为字符串形式)排序,改变原数组
参数传一个函数以自定义排序 [1, 4, 2, 6, 0, 6, 2, 6].sort((a, b) => a - b)
- map():将所有数组成员一次传入回调函数执行并组成一个数组返回,原数组不变
- 传入一个回调函数作为参数
回调函数的参数为(item,index,arr) [1, 2, 3].map(function(item, index, arr) { return item * index; }); // [0, 2, 6]
- 传入第二个参数给回调函数绑定this对象
var arr = ['a', 'b', 'c']; [1, 2].map(function (e) { return this[e]; }, arr) // ['b', 'c']
- 数组有空位会跳过,而null和undefined不会被跳过
var f = function (n) { return 'a' }; [1, undefined, 2].map(f) // ["a", "a", "a"] [1, null, 2].map(f) // ["a", "a", "a"] [1, , 2].map(f) // ["a", , "a"]
- 传入一个回调函数作为参数
- forEach():对数据进行操作,无法终止,返回值undefined,需要得到返回值用map(),用法与map类似。原数组不变
- 传入一个回调函数作为参数
log(element, index, array) { console.log('[' + index + '] = ' + element); } [2, 5, 9].forEach(log); // [0] = 2 // [1] = 5 // [2] = 9 // undefined
- 传入第二个参数为回调函数绑定this对象
var out = []; [1, 2, 3].forEach(function(elem) { this.push(elem * elem); }, out); out // [1, 4, 9]
- 传入第二个参数为回调函数绑定this对象
- 数组有空位时结果与map同
- 传入一个回调函数作为参数
- filter():过滤数组成员,满足结果的成员组成数组作为返回值,原数组不变
- 传入一个回调函数作为参数
[1, 2, 3, 4, 5].filter(function (elem, index, arr) { return index % 2 === 0; }); // [1, 3, 5]
- 传入第二个参数绑定回调函数的this对象
- 传入一个回调函数作为参数
- reduce():过于强大,具体见=>你不知道的25个reduce高级用法 https://juejin.im/post/6844904063729926152
- indexOf()和lastIndexOf()
- indexOf(value)返回value第一次出现的位置的下标,没有返回-1
接收第二个参数,表示开始搜索参数的位置 ['a', 'b', 'c'].indexOf('a', 1) // -1
- lastIndexOf(value)返回value最后一次出现的位置的下标,没有返回-1
- indexOf(value)返回value第一次出现的位置的下标,没有返回-1
- valueOf()