一些数组方法的简单用法(2)

2018-06-16  本文已影响0人  初入前端的小菜鸟

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()

定义和用法

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反向,方法有两个参数

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
上一篇下一篇

猜你喜欢

热点阅读