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) // 1
arr.push('a') // 2
arr.push(true, {}) // 4
arr // [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'); // 4
a // ['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') // 1
a.indexOf('y') // -1