数组的方法
1.map
遍历数组,返回回调返回值组成的新数组
示例
var array1 = [0, 'z', true, 3, 'a'] //先定义一个数组
var str = array1.map((i, index, arr) => {
console.log(i + '--') // 0-- z-- ...
console.log(index + '++') // 0++ 1++ ...
console.log(arr) // [ 0, 'z', true, 3, 'a' ]
return i
}, this)
console.log(str) //结果为 [ 0, 'z', true, 3, 'a' ]
参数
i: 遍历过程的每一项
index: 遍历序号(索引值)
arr: 原数组;
需要一个返回值,并返回一个新的数组,存在一个映射关系,并且不会改变原数组,不会对空数组进行检测。
2. forEach
无法 break ,可以用 try/catch 中 throw new Error 来停止
3.filter
过滤some : 有一项返回 true ,则整体为 true
示例
var array1 = [0, 'z', true, 3, 'a'] //先定义一个数组
var str = array1.filter ((i, index, arr) => {
console.log(i + '--') // 0-- z-- ...
console.log(index + '++') // 0++ 1++ ...
console.log(arr) // [ 0, 'z', true, 3, 'a' ]
return i
})
console.log(str) //结果为 [ 0, 'z', true, 3, 'a' ]
参数
i: 遍历过程的每一项
index: 遍历序号(索引值)
arr: 原数组;
需要一个返回值,并返回一个新的数组,存在一个映射关系,并且不会改变原数组,不会对空数组进行检测。
简单查询数组的奇数:
var array1 = [0, 2, 6, 3, 8, 9] //先定义一个数组
var str = array1.filter((i, index, arr) => {
if (i % 2 !== 0) {
return i
}
})
console.log(str) //结果为 [ 3, 9 ]
4. every / some
针对数组中的每一个元素进行比对,只要有一个元素比对结果为false则返回false,反之要所有的元素比对结果为true才为true
简洁的说:有一项返回 false ,则整体为 false
示例:
var array1 = [3, 2, 6, 3, 8, 9] //先定义一个数组
var one = array1.every((i) => {
return i < 7
})
var two = array1.every((i) => {
return i > 1
})
console.log(one) // 返回 false
console.log(two) // 返回 true
some方法的使用和every一样,字面意思:every表式每一个通过才通过,而some表式一个通过就可以通过,全部不通过则返回false
示例:
var array1 = [3, 2, 6, 3, 8, 9] //先定义一个数组
var one = array1.some((i) => {
return i > 10
})
var two = array1.some((i) => {
return i > 1
})
console.log(one) // 返回 false
console.log(two) // 返回 true
5. join
通过指定连接符生成字符串
示例:
var arr = ['A', 'E', 'I', 'O', 'U'] //定义数组
console.log(arr.join('')) // 输出:AEIOU
console.log(arr.join(' -- ')) // 输出:A -- E -- I -- O -- U
console.log(arr.join(' * ')) // 输出:A * E * I * O * U
6. push / pop
末尾添加和删除,改变原数组, 返回添加/删除
7. unshift / shift
头部添加和删除,改变原数组,返回添加/删除
8. sort(fn) / reverse
排序与反转,改变原数组
9. concat
连接数组,不影响原数组, 浅拷贝
10.slice(start, end)
返回截断后的新数组,不改变原数组
参数解析
start:必需,从原数组的start位置开始截取(包括下标为start的元素)。start为负数,表示从尾部开始截取。如-1表示最后一个元素,-2表示倒数第二个元素
end:可选,截取到的指定位置(不包括下标为end的元素)。没有指定,则截取到最后一个元素。end要大于start,否则截取不到元素
11. splice(start,number,value…)
返回删除元素组成的数组,value 为插入项,改变原数组
参数
start:必需。整数,指定在什么位置添加/删除项目,使用负值指定从数组末尾开始的位置。
number:可选。要删除的项目数。如果设置为 0,则不会删除任何项目。
value:可选。要添加到数组中的新项目,可以有很多。
12. indexOf / lastIndexOf(value, fromIndex)
查找数组项,返回对应的下标
参数
value:必需。规定需检索的字符串值。
fromindex:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 (当前数组).length - 1。如省略该参数,则将从字符串的首字符开始检索。
返回 value的第一次出现的位置
- indexOf() 方法对大小写敏感!
- 如果要检索的字符串值没有出现,则该方法返回 -1。
lastIndexOf的使用域indexOf相反,从最后出现的位置)出现某个字符或字符串的首个字符索引值,没有匹配的则返回-1
13. reduce / reduceRight(fn(prev, cur) ,defaultPrev)
两两执行,prev 为上次化简函数的return 值,cur 为当前值(从第二项开始)
用于累加
示例:
var array1 = [3, 2, 6, 3, 8, 9] //先定义一个数组
var total = array1.reduce((e, i) => {
return e + i;
}, 0);
console.log(total); // 输出:31
参数:
参数一:callback(fn)回调函数
回调函数参数1:累计器累计回调的返回值; 它是上一次调用回调时返回的累积值
回调函数参数2:数组中正在处理的元素(每一项)。
回调函数参数3:index,可选: 数组中正在处理的当前元素的索引。 如果提供了第二个参数,则起始索引号为0,否则从索引1起始。
回调函数参数3:可选,调用reduce()的原数组参数二:defaultPrev:作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。