数组(forEach、map、filter、every、some)

56 阅读1分钟

1、forEach

(1)会修改最初的数组,没有返回值。

(2)接收一个回调函数。回调函数接收3个参数:1、数组元素(必须)、2、元素的索引值、3、数组

var charSets = ["ab","bb","cd","ab","cc","ab","dd","ab"]
charSets.forEach((e,index,arr)=>{
  if(e == 'ab') arr[index] = '***'
})
console.log(charSets)//***,bb,cd,***,cc,***,dd,***

2、map

(1)创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

(2)接收一个回调函数。回调函数接收3个参数:1、数组元素(必须)、2、元素的索引值、3、数组

var decArray = [23,255,122,5,16,99]
var hexArray = decArray.map(function (e) {
    return e.toString(16)
})
console.log(JSON.stringify(hexArray))//["17","ff","7a","5","10","63"]

3、filter

(1)根据函数条件返回一个新的数组,不会改变原数组。

(2)接收一个回调函数。回调函数接收3个参数:1、数组元素(必须)、2、元素的索引值、3、数组

var charSet = ['**', 'bb', 'cd', '**', 'cc', '**', 'dd', '**']
var newArray = charSet.filter(function(e){
    return (e !== "**")
})
console.log(JSON.stringify(newArray))//["bb","cd","cc","dd"]

4、every

(1)只要函数返回一个false值,处理就会结束,并且该方法也返回一个false

(2)接收一个回调函数。回调函数接收3个参数:1、数组元素(必须)、2、元素的索引值、3、数组

function testValue(e,index,array){
    var textExp = /^[a-zA-Z]+$/
    return textExp.test(e)
}

var elemSet = ['**', 132, 'aaa', '**', 'abc', '-', 46, 'AAA']

var result = elemSet.every(testValue)
console.log(result)//false
var elemSet2 = ["elephant","lion","cat","dog"]
result = elemSet2.every(testValue)
console.log(result)//true

5、some

(1)只要测试通过函数返回一个true值,处理就会结束。如果测试了所有的数组元素全部不符合条件就会返回false

(2)接收一个回调函数。回调函数接收3个参数:1、数组元素(必须)、2、元素的索引值、3、数组

var elemSet = new Array('**', 132, 'aaa', '**', 'abc', '-', 46, 'AAA')
function testValue(e,index,array){
    var textExp = /^[a-zA-Z]+$/
    return textExp.test(e)
}

var result = elemSet.some(testValue)
console.log(result)//true