Map对象 Map.prototype.forEach()
forEach() 方法将会以插入顺序对 Map 对象中的每一个键值对执行一次参数中提供的回调函数,它不会对任何已经被删除的元素执行调用。然而,它还会对键存在而值为 undefined 的元素执行调用。
/**
* @syntax myMap.forEach(callback[, thisArg])
* @param {Function | (Function && thisArg)} callback
* @return undefined 不需要return
*/
/**
* @function callback(value, key, map) {}
* @param {Number | Object | undefined | String | Boolean | Symb } value
* @param {String} key
* @param {Map} map 一般不用
* @return undefined 不需要return
*/
let myMap = new Map([["name","Aranl"],["age",'18'],["sex","man"]])
myMap.set({school:"GDUFE"},"COOL")
myMap.forEach((value, key) => {
console.log("myMap["+key+"] = "+ value)
})
/*
"myMap[name] = Aranl"
"myMap[age] = 18"
"myMap[sex] = man"
"myMap[[object Object]] = COOL"
*/
Array对象 Array.prototype.forEach()
forEach() 方法将对数组中的每一个元素执行一次提供的函数
/**
* @syntax myArray.forEach(callback[, thisArg])
* @parameters {Function | (Function && thisArg)} callback
* @return undefined 不需要return
*/
/**
* @function callback(currentValue[, index[, array]]) { //your iterator }
* @param {Number | Object | undefined | String | Boolean | Symb } currentValue
* @param {Number} index
* @param {Array} array 一般不用
* @return undefined 不需要return
*/
- 实例1
let myArray = [{name:"Aranl"}, {age:'18'}, {sex:"man"}]
myArray = myArray.concat({school:"GDUFE"})
myArray.forEach((value, index) => {
console.log("myArray["+index+"] = ", value)
})
/*
"myArray[0] = "
[object Object] {
name: "Aranl"
}
"myArray[1] = "
[object Object] {
age: "18"
}
"myArray[2] = "
[object Object] {
sex: "man"
}
"myArray[3] = "
[object Object] {
school: "GDUFE"
}
*/
- 实例2 使用thisArg
使用数组中的元素值更新一个对象的属性:
function Counter() {
this.sum = 0;
this.count = 0;
}
Counter.prototype.add = function(array) {
array.forEach((currentValue, index) => {
this.sum += currentValue;
this.count++;
}, this)
}
let obj = new Counter()
obj.add([1,2,3,4,5])
console.log(obj.count, obj.sum) // 5 15
因为thisArg参数(this)传给了forEach(),每次调用的时候,它都会被传给callback函数,作为它的this值。(thisArg参数指定被传入的对象,将对象作为回调函数里this的指定对象)
网友评论