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