阮一峰老师
链接:http://javascript.ruanyifeng.com/stdlib/array.html#toc0
1.push——用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组的长度。该方法会改变原数组。
2.pop——删除数组的最后一个元素,并返回删除的元素。该方法会改变原数组。
3.join——以参数作为分隔符,把数组连接成字符串,默认用“,”分隔。不会改变原数组。
Array.prototype.join.call('hello', '-') // "h-e-l-l-o"
4.concat——用于将新数组添加到原数组末尾,并返回一个新数组,不会改变原数组。
只要原数组的成员中包含对象,concat
方法不管有没有参数,总是返回该对象的引用。(浅复制)
5.shift——删除数组的第一个元素,并返回该元素。该方法会改变原数组。
var a = ['a', 'b', 'c']; console.log(a.shift()); // 'a' console.log(a); // ['b', 'c']
push
和shift
结合使用,就构成了“先进先出”的队列结构(queue)
6.unshift——在数组的第一个位置添加元素,该方法会改变原数组。
7.reverse——颠倒数组中的元素。该方法会改变原数组。
8.slice——提取原数组的一部分。不改变原数组。
slice可用于将类似数组的对象(arguments,标签集)转换为正真的数组
Array.prototype.slice.call({ 0: 'a', 1: 'b', length: 2 }) // ['a', 'b'] Array.prototype.slice.call(document.querySelectorAll("div")); Array.prototype.slice.call(arguments);
9.splice——删除原数组的部分成员,并可以添加新的元素成员。返回被删除的元素。该方法会改变原数组。
var a = ['a', 'b', 'c', 'd', 'e', 'f']; a.splice(4, 2, 1, 2) // ["e", "f"] a // ["a", "b", "c", "d", 1, 2]
10.sort——对数组元素进行排序,默认按照字典顺序排序(数值会被转成字符串,然后再按照字典顺序),不是按照大小排序。该方法会改变原数组。
[10111, 1101, 111].sort() // [10111, 1101, 111]
11.map——对数组的所有成员调用一个函数,根据函数结果返回一个新数组。不会改变原数组。
var numbers = [1, 2, 3]; numbers.map(function (n) { return n + 1; }); // [2, 3, 4] numbers // [1, 2, 3]
[1, 2, 3].map(function(elem, index, arr) {//elem当前成员,index当前位置,arr数组本身 return elem * index; }); // [0, 2, 6]
可通过[].map.call('abc', upper)用于对字符串操作map,或者现将
字符串转换为数组,再使用
'abc'.split('').map(upper)
12.split——用于把一个字符串分割成字符串数组。
13.forEach——forEach
方法与map
方法很相似,也是遍历数组的所有成员,执行某种操作,但是forEach
方法一般不返回值,只用来操作数据。如果需要有返回值,一般使用map
方法。
forEach
方法也可以接受第二个参数,用来绑定回调函数的this
关键字。
var out = []; [1, 2, 3].forEach(function(elem) { this.push(elem * elem); }, out);//out为第二个参数,用来绑定回调函数的关键字this out // [1, 4, 9]
14.filter——filter
方法的参数是一个函数,所有数组成员依次执行该函数,返回结果为true
的成员组成一个新数组返回。该方法不会改变原数组。
15.reduce——从左到右处理
[1, 2, 3, 4, 5].reduce(function(x, y){ console.log(x, y) return x + y; }); // 1 2 // 3 3 // 6 4 // 10 5 //最后结果:15
16.some,every——用于判断
var arr = [1, 2, 3, 4, 5]; arr.some(function (elem, index, arr) { return elem >= 3; }); // true
var arr = [1, 2, 3, 4, 5]; arr.every(function (elem, index, arr) { return elem >= 3; }); // false
17.indexOf(),lastIndexOf()——元素在数组中第一次/最后一次出现的位置
18.find() 方法返回值是第一个通过测试(函数内判断)的数组的该成员,之后的值不会再调用执行函数,如果没有符合条件的元素返回undefined。
var ages = [3, 10, 18, 20]; function checkAdult(age) { return age >= 18; } function myFunction() { document.getElementById("demo").innerHTML = ages.find(checkAdult); } //18
19.findIndex() 方法返回值是第一个通过测试(函数内判断)的数组的该成员的位置,之后的值不会再调用执行函数,如果没有符合条件的元素返回-1。