返回介绍

solution / 2800-2899 / 2804.Array Prototype ForEach / README

发布于 2024-06-17 01:02:59 字数 2579 浏览 0 评论 0 收藏 0

2804. 数组原型的 forEach 方法

English Version

题目描述

编写一个数组方法 forEach,使其可以在任何数组上调用 array.forEach(callback, context) 方法,它将在数组的每个元素上执行回调函数。forEach 方法不应该返回任何内容。

回调函数 callback 接受以下参数:

  • value - 表示数组中当前正在处理的元素的值。
  • index - 表示数组中当前正在处理的元素的索引。
  • array - 表示数组本身,在回调函数内部可以访问整个数组。

上下文 context 应该是作为函数上下文参数传递给回调函数 callback 的对象,确保回调函数 callback 内部的 this 关键字引用此上下文对象。

尝试在不使用内置数组方法的情况下实现这个方法。

 

示例 1:

输入:
arr = [1,2,3], 
callback = (val, i, arr) => arr[i] = val * 2, 
context = {"context":true}
输出:[2,4,6]
解释:
arr.forEach(callback, context)  
console.log(arr) // [2,4,6]

回调函数在数组的每个元素上执行。

示例 2:

输入:
arr = [true, true, false, false], 
callback = (val, i, arr) => arr[i] = this, 
context = {"context": false}
输出:[{"context":false},{"context":false},{"context":false},{"context":false}]
解释:
arr.forEach(callback, context) 
console.log(arr) // [{"context":false},{"context":false},{"context":false},{"context":false}]

回调函数在数组的每个元素上以正确的上下文执行。

示例 3:

输入:
arr = [true, true, false, false], 
callback = (val, i, arr) => arr[i] = !val, 
context = {"context": 5}
输出:[false,false,true,true]

 

提示:

  • arr 是一个有效的 JSON 数组
  • context 是一个有效的 JSON 对象
  • fn 是一个函数
  • 0 <= arr.length <= 105

解法

方法一

Array.prototype.forEach = function (callback: Function, context: any): void {
  for (let i = 0; i < this.length; ++i) {
    callback.call(context, this[i], i, this);
  }
};

/**
 *  const arr = [1,2,3];
 *  const callback = (val, i, arr) => arr[i] = val * 2;
 *  const context = {"context":true};
 *
 *  arr.forEach(callback, context)
 *
 *  console.log(arr) // [2,4,6]
 */

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文