美文网首页
初探 forEach() 方法

初探 forEach() 方法

作者: 林键燃 | 来源:发表于2018-10-11 15:37 被阅读1次

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的指定对象)

相关文章

网友评论

      本文标题:初探 forEach() 方法

      本文链接:https://www.haomeiwen.com/subject/hwmbaftx.html