我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript基础之Array forEach使用示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript基础之Array forEach使用示例

前言

forEach() 方法对数组的每个元素执行一次给定的函数。

回调函数中传递三个参数:

  • 第一个参数,就是当前正在遍历的元素
  • 第二个参数,就是当前正在遍历的元素的索引
  • 第三个参数,就是正在遍历的数组

尝试一下

var list = ["云层上的光", "初心", "栾树"];
list.forEach(function(item, index, array){
    console.log(item,index,array)
});

输出内容如下:

那我就好奇了,在forEach回调函数中的this指向谁呢?forEach函数是否有返回值

var list = ["云层上的光", "初心", "栾树"];
var value = list.forEach(function(item, index, array){
    console.log(this);
});
console.log(value);

可以看到 this指向 window并且forEach没有返回值,返回值为 undefined

那我们可以更改this指向吗?

forEach其实接受两个参数,第二个参数 可选参数。当执行回调函数时,用作 this 的值。

forEach实现

Array.prototype.myForEach = function (callback) {
  var _arr    = this,// 调用时谁 this就是谁
      _len    = _arr.length,
      thisArg = arguments[1] || window;
  // 校验callback之能是 function时才往下执行
  if (typeof callback !== 'function') {
    throw new Error(`${callback} is not a function`);
  }
  // for循环
  for (var i = 0; i < _len; i++) {
    callback.apply(thisArg, [_arr[i], i, _arr]);
  }
  // 注意 forEach 没有返回值
}

对象模仿数组

对象的原型上并没有 forEach,所以我们调用 Array.prototype.forEach方法通过call改变方法内部的this指向,myForEach内部循环需要length, 所以我们在对象中模拟了添加了一个length属性,对象的key 分别为 0,1,2 分别对应了循序中的下标。

const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
};
Array.prototype.forEach.call(arrayLike, (x) => console.log(x));

forEach跳出循环体?

forEach可以跳出循环体吗?其实 returnbreak 是无法做到的,不过可以使用 throw new Error

var list = ["云层上的光", "初心", "栾树"];
try{
    list.forEach(item=&gt;{
        if(item === "初心") throw new Error("初心");
    })
}catch(err){
    if(err.message === "初心")	
        console.log("在执行到初心时跳出循环体了")
    else 
        console.error(err)
}

以上就是JavaScript基础之Array forEach使用示例的详细内容,更多关于JavaScript Array forEach的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript基础之Array forEach使用示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript基础之Array forEach使用示例

这篇文章主要为大家介绍了JavaScript基础之Array forEach使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-21

C++教程之array数组使用示例详解

这篇文章主要为大家介绍了C++教程之array数组使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-08

基础使用和示例:C语言中scanf函数

C语言中scanf函数的基本用法与示例简介:在C语言中,scanf函数是一种常用的输入函数,用于从标准输入设备(通常是键盘)获取数据,并把数据存储到变量中。本文将详细介绍scanf函数的基本用法,并提供一些具体的代码示例,帮助读者更好地理
基础使用和示例:C语言中scanf函数
2024-02-25

ES6基础语法之数组的使用实例分析

这篇文章主要介绍了ES6基础语法之数组的使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6基础语法之数组的使用实例分析文章都会有所收获,下面我们一起来看看吧。一、Array.of()将参数中所有值
2023-06-30

Python爬虫基础之初次使用scrapy爬虫实例

项目需求 在专门供爬虫初学者训练爬虫技术的网站(http://quotes.toscrape.com)上爬取名言警句。 创建项目 在开始爬取之前,必须创建一个新的Scrapy项目。进入您打算存储代码的目录中,运行下列命令:(base) λ
2022-06-02

Android开发基础使用ProgressBar加载进度条示例

这篇文章主要介绍了安卓开发基础使用ProgressBar加载进度条示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-05

Android 之Preference控件基本使用示例详解

这篇文章主要为大家介绍了Android 之Preference控件基本使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-22

Android编程基础之获取手机屏幕大小(DisplayMetrics应用)示例

本文实例讲述了Android获取手机屏幕大小的方法。分享给大家供大家参考,具体如下: 这里主要用了三个对象TextView ,Button ,以及DisplayMetrics ,其中Displaymetrics 是取得手机屏幕大小的关键类,
2022-06-06

编程热搜

目录