Array 对象

静态方法

Array.isArray() typeof运算符只能显示数组的类型是Object,而Array.isArray办法能够辨认数组。

Array.isArray办法返回一个布尔值,示意参数是否为数组。它能够补救typeof运算符的有余。

var arr = [1, 2, 3];typeof arr // "object"Array.isArray(arr) // true

push(),pop()

push办法用于在数组的末端增加一个或多个元素,并返回增加新元素后的数组长度。留神,该办法会扭转原数组。

var arr = [];arr.push(1) // 1arr.push('a') // 2arr.push(true, {}) // 4arr // [1, 'a', true, {}]

pop办法用于删除数组的最初一个元素,并返回该元素。留神,该办法会扭转原数组。

var arr = ['a', 'b', 'c'];arr.pop() // 'c'arr // ['a', 'b']

shift(),unshift()

shift()办法用于删除数组的第一个元素,并返回该元素。留神,该办法会扭转原数组。

var a = ['a', 'b', 'c'];a.shift() // 'a'a // ['b', 'c']

unshift()办法用于在数组的第一个地位增加元素,并返回增加新元素后的数组长度。留神,该办法会扭转原数组。

var a = ['a', 'b', 'c'];a.unshift('x'); // 4a // ['x', 'a', 'b', 'c']

join()

join()办法以指定参数作为分隔符,将所有数组成员连贯为一个字符串返回。如果不提供参数,默认用逗号分隔。

var a = [1, 2, 3, 4];a.join(' ') // '1 2 3 4'a.join(' | ') // "1 | 2 | 3 | 4"a.join() // "1,2,3,4"

通过call办法,这个办法也能够用于字符串或相似数组的对象。

Array.prototype.join.call('hello', '-')// "h-e-l-l-o"var obj = { 0: 'a', 1: 'b', length: 2 };Array.prototype.join.call(obj, '-')// 'a-b'

concat()

concat办法用于多个数组的合并。它将新数组的成员,增加到原数组成员的后部,而后返回一个新数组,原数组不变。

['hello'].concat(['world'])// ["hello", "world"]['hello'].concat(['world'], ['!'])// ["hello", "world", "!"][].concat({a: 1}, {b: 2})// [{ a: 1 }, { b: 2 }][2].concat({a: 1})// [2, {a: 1}]

reverse()

reverse办法用于颠倒排列数组元素,返回扭转后的数组。留神,该办法将扭转原数组。

var a = ['a', 'b', 'c'];a.reverse() // ["c", "b", "a"]a // ["c", "b", "a"]

slice()

slice()办法用于提取指标数组的一部分,返回一个新数组,原数组不变。

arr.slice(start, end);var a = ['a', 'b', 'c'];a.slice(0) // ["a", "b", "c"]a.slice(1) // ["b", "c"]a.slice(1, 2) // ["b"]a.slice(2, 6) // ["c"]a.slice() // ["a", "b", "c"]

splice()

splice()办法用于删除原数组的一部分成员,并能够在删除的地位增加新的数组成员

arr.splice(start, count, addElement1, addElement2, ...);
var a = ['a', 'b', 'c', 'd', 'e', 'f'];a.splice(4, 2) // ["e", "f"]a // ["a", "b", "c", "d"]
var a = ['a', 'b', 'c', 'd', 'e', 'f'];a.splice(4, 2, 1, 2) // ["e", "f"]a // ["a", "b", "c", "d", 1, 2]

sort()

sort办法对数组成员进行排序,默认是依照字典程序排序。排序后,原数组将被扭转。

['d', 'c', 'b', 'a'].sort()// ['a', 'b', 'c', 'd'][4, 3, 2, 1].sort()// [1, 2, 3, 4][11, 101].sort()// [101, 11][10111, 1101, 111].sort()// [10111, 1101, 111]

map()

map()办法将数组的所有成员顺次传入参数函数,而后把每一次的执行后果组成一个新数组返回。

var numbers = [1, 2, 3];numbers.map(function (n) {  return n + 1;});// [2, 3, 4]numbers// [1, 2, 3]

forEach()

forEach()办法与map()办法很类似, forEach()办法不返回值,只用来操作数据。

function log(element, index, array) {  console.log('[' + index + '] = ' + element);}[2, 5, 9].forEach(log);// [0] = 2// [1] = 5// [2] = 9

filter()

filter()办法用于过滤数组成员,满足条件的成员组成一个新数组返回。

[1, 2, 3, 4, 5].filter(function (elem) {  return (elem > 3);})// [4, 5]
var arr = [0, 1, 'a', false];arr.filter(Boolean)// [1, "a"]

filter()办法返回数组arr外面所有布尔值为true的成员。

some(),every()

some办法是只有一个成员的返回值是true,则整个some办法的返回值就是true,否则返回false

var arr = [1, 2, 3, 4, 5];arr.some(function (elem, index, arr) {  return elem >= 3;});// true

every办法是所有成员的返回值都是true,整个every办法才返回true,否则返回false

var arr = [1, 2, 3, 4, 5];arr.every(function (elem, index, arr) {  return elem >= 3;});// false

reduce(),reduceRight()

reduce()办法和reduceRight()办法顺次解决数组的每个成员,最终累计为一个值。它们的差异是,reduce()是从左到右解决(从第一个成员到最初一个成员),reduceRight()则是从右到左(从最初一个成员到第一个成员),其余齐全一样。

[1, 2, 3, 4, 5].reduce(function (a, b) {  console.log(a, b);  return a + b;})// 1 2// 3 3// 6 4// 10 5//最初后果:15

indexOf(),lastIndexOf()

indexOf办法返回给定元素在数组中第一次呈现的地位,如果没有呈现则返回-1

var a = ['a', 'b', 'c'];a.indexOf('b') // 1a.indexOf('y') // -1