一些数组方法的简单用法(2)
indexOf()
定义和用法
indexOf()
方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。 |
说明
该方法将从头到尾地检索字符串 stringObject
,看它是否含有子串 searchvalue
。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个searchvalue
,则返回 searchvalue
的第一次出现的位置。stringObject
中的字符位置是从 0 开始的。
提示和注释
注释:indexOf()
方法对大小写敏感!
注释:如果要检索的字符串值没有出现,则该方法返回 -1。
示例
var str = "ni hao ya"
console.log(str.indexOf("ni")) // 0
console.log(str.indexOf("hao")) // 3
console.log(str.indexOf("ya")) // 7
console.log(str.indexOf(" ")) //2 可以看出空格也算事一个字串
forEach()
forEach()
方法对数组的每个元素执行一次提供的函数。
定义和用法
forEach()
方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach()
对于空数组是不会执行回调函数的。
语法
array.forEach(function(currentValue, index, arr), thisValue)
参数 | 描述 |
---|---|
currentValue | 必需。当前元素 |
index | 可选。当前元素的索引值。 |
arr | 可选。当前元素所属的数组对象。 |
thisValue | 可选。传递给函数的值一般用 "this" 值。如果这个参数为空, "undefined" 会传递给 "this" 值 |
示例
var str = [1,2,3]
str.forEach(function(str,i,arr){
arr[i] += str
})
console.log(str) // [2, 3, 4]
map()
map()
与forEach
类似,遍历数组,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变
定义和用法
map()
方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map()
方法按照原始数组元素顺序依次处理元素。
注意:map()
不会对空数组进行检测。
注意: map()
不会改变原始数组。
语法
array.map(function(currentValue,index,arr), thisValue)
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当期元素的索引值 |
arr | 可选。当期元素属于的数组对象 |
示例
var str = [1,2,3,4]
console.log(str) // [1, 2, 3, 4]
console.log(str.map(function(e){
return e*e;
})) // [1, 4, 9, 16]
every() 与 some()
这两个函数类似于离散数学中的逻辑判定,回调函数返回一个布尔值
-
every
是所有函数的每个回调函数都返回true
的时候才会返回true
,当遇到false
的时候终止执行,返回false
-
some
函数是“存在”有一个回调函数返回true
的时候终止执行并返回true
,否则返回false
every()
定义和用法
every()
方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every()
方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false
,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true
。
注意: every()
不会对空数组进行检测。
注意: every()
不会改变原始数组。
语法
array.every(function(currentValue,index,arr), thisValue)
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
示例
var a = [1, 2, 3, 4]
console.log(a.every(function(e, i, arr){
return e < 5
})) // true
------------------------------
var a = [1, 2, 3, 4 , 5]
console.log(a.every(function(e, i, arr){
return e < 5
})) // false
some()
定义和用法
some()
方法用于检测数组中的元素是否满足指定条件(函数提供)。
some()
方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true
, 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意:some()
不会对空数组进行检测。
注意: some()
不会改变原始数组。
语法
array.some(function(currentValue,index,arr),thisValue)
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
示例
var a = [7, 8, 9, 1]
console.log(a.some(function(e, i, arr){
return e < 5
})) // true
------------------------
var a = [7,8,9]
console.log(a.some(function(e, i, arr){
return e < 5
})) // false
filter()
filter()
返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false
则不加
新数组只包含返回true
的值,索引缺失的不包括,原数组保持不变
定义和用法
filter()
方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter()
不会对空数组进行检测。
注意: filter()
不会改变原始数组。
语法
array.filter(function(currentValue,index,arr), thisValue)
参数 | 描述 |
---|---|
currentValue | 必须。当前元素的值 |
index | 可选。当前元素的索引值 |
arr | 可选。当前元素属于的数组对象 |
示例
var a = [1, 2, 3, 4, 5, 6]
console.log(a.filter(function(e){
return e % 2 == 0;
})) // [2, 4, 6]
console.log(a) //[1, 2, 3, 4, 5, 6]
reduce() 与 reduceRight()
遍历数组,调用回调函数,将数组元素组合成一个值,reduce
从索引最小值开始,reduceRight
反向,方法有两个参数
- 回调函数:把两个值合为一个,返回结果
-
value
,一个初始值,可选
reduce()
定义和用法
reduce()
方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce()
可以作为一个高阶函数,用于函数的compose
。
注意:reduce()
对于空数组是不会执行回调函数的。
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 | 描述 |
---|---|
total | 必需。初始值, 或者计算结束后的返回值。 |
currentValue | 必需。当前元素 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象。 |
initialValue | 可选。传递给函数的初始值 |
示例
var a = [1, 2, 3, 4, 5, 6]
var b = a.reduce(function(v1, v2){ return v1 + v2 })
console.log(b) // 21
reduceRight()
定义和用法
reduceRight()
方法的功能和 reduce()
功能是一样的,不同的是 reduceRight()
从数组的末尾向前将数组中的数组项做累加。
注意:reduce()
对于空数组是不会执行回调函数的
语法
array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue)
参数 | 描述 |
---|---|
total | 必需。初始值, 或者计算结束后的返回值。 |
currentValue | 必需。当前元素 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象。 |
initialValue | 可选。传递给函数的初始值 |
示例
var a = [1, 2, 3, 4, 5, 6]
var b = a.reduceRight(function(v1, v2){
return v1 + v2
},100)
console.log(b) // 121