您当前的位置:首页 > 互联网教程

js正则匹配exec为何foreach循环和普通for的输出结果不一致

发布时间:2025-05-21 06:57:44    发布人:远客网络

js正则匹配exec为何foreach循环和普通for的输出结果不一致

一、js正则匹配exec为何foreach循环和普通for的输出结果不一致

1、你好,首先我们看看exec之后,array的内容:

2、["2015hellojavascript","2015","hello","javascript",index:0,input:"2015hellojavascript"];//事实上他是一个数组,但是包含两个带索引的元素(index/input)

接下来,第一个for循环,使用的是下标从0到length,并依次alert则得到:

3、接下来,第一个for循环,使用的是下标从0到length,并依次alert则得到:

4、alert(array[0]);//2015hellojavascript

5、alert(array[3]);//javascript

而再下面一个for循环使用的是for...in,循环的是属性,而不是下标

6、而再下面一个for循环使用的是for...in,循环的是属性,而不是下标

7、//我们从上面的array的结果中看到index=0

8、alert(array[index]);->alert(array[0]);//2015hellojavascript

9、//我们从上面的array的结果中看到input="2015hellojavascript"

10、alert(array[input]);->alert(array["2015hellojavascript"]);//undefined

至此,array再无属性元素,循环结束。

11、至此,array再无属性元素,循环结束。

二、node.js中的forEach是同步还是异步

1、node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作。当然,node也提供了同步版本的函数,例如文件操作,fs.readFileSync()是fs.readFile()的同步版本。

2、那么问题来了,forEach()是不是异步的呢?按理说,没有加Sync,应该是异步的呀。

3、 var arr= ['a','b','c'];

4、 while(true){};//用一个死循环,卡死它~~

5、运行上面的代码,结果它就这么卡死了,没有任何输出。。

6、所以说,node里的forEach()是同步的!!

7、第一次用node的时候,没有考虑过这个问题,按同步的写了,写突然想到,测试后虚惊一场,以为以前的代码都写错了。

三、JS 数组中的forEach、map、filter、find四个方法的使用方法

1、JavaScript数组中,四个强大且实用的高阶函数——forEach、map、filter和find,各自具有独特的功能。forEach用于逐个遍历数组元素,执行给定的函数,但不返回值,主要用作副作用操作。例如:

2、map方法则用于创建新数组,每个元素是原数组元素经过函数处理后的结果。例如:

3、let doubled= numbers.map((num)=> num* 2);

4、console.log(doubled);// [2, 4, 6, 8, 10]

5、filter方法则筛选出数组中符合条件的元素,生成新数组。例如:

6、let even= arr.filter((num)=> num% 2=== 0);

7、find方法则在数组中查找第一个满足给定条件的元素,返回该元素的值,否则返回undefined。例如:

8、let obj={ name:'John', age: 30};

9、let result= obj.find((value)=> value.age> 25);

10、console.log(result);//{ age: 30}

11、总的来说,这四个函数在处理数组时,分别提供了遍历、变换、筛选和查找的功能,极大地简化了数组操作的复杂性。熟练掌握它们,将有助于提升你的JavaScript编程效率。