查找.indexOf
arr.indexOf(elem)
,
我们实际中可能会写 a=='a' || a=='b' || a=='c'
,现在可以这么写。
['a','b','c'].indexOf(a)
循环 forEach
every 和 some
some将会给数组里的每一个元素执行一遍回调函数,直到有一个回调函数返回true为止。如果找到目标元素,some立即返回true,否则some返回false。回调函数只对已经指定值的数组索引执行;它不会对已删除的或未指定值的元素执行。
join 和 concat
.join(分隔符)方法创建一个字符串,会将数组里面每个元素用分隔符连接。如果没有提供分隔符,默认的分隔符为“,”。.concat方法创建一个新数组,其是对原数组的浅拷贝(注意是浅拷贝哦)。
栈方法 入栈push/unshift 出栈pop/shift
队列方法 shift出队列 unshift 入队列
用.shift或.pop能很容易遍历数组元素,并在操作过程中清空数组
list = [1,2,3,4,5,6,7,8,9,10]
while (item = list.shift()) {
console.log(item)
}
模型映射.map
map方法会按顺序给原数组中的每个元素(必须有值)都调用一次 callback函数.callback,每次执行后的返回值组合起来形成一个新数组. callback函数只会在有值的索引上被调用; 那些从来没被赋过值或者使用delete删除的索引则不会被调用。
查询.filter
filter对每个数组元素执行一次回调函数,并返回一个由回调函数返回true的元素组成的新数组。回调函数只会对已经指定值的数组项调用,类似SQL里where语句
排序.sort(比较函数)
传入一个function(a,b)的函数。
- 如果a在b前,则返回值小于零(< 0)
- 如果a和b是等价的,则返回值等于零(=== 0)
- 如果a在b后,则返回值大于零(> 0)
复制.slice
返回的是浅拷贝
Array.prototype.slice能被用来将类数组对象转换为真正的数组。
Array.prototype.slice.call({ 0: 'a', 1: 'b', length: 2 })
从参数列表中移除最初的几个元素,并将类数组对象转换为真正的数组。
var values = Array.prototype.slice.call(arguments, 2)//从第二个参数开始