js正则匹配exec为何foreach循环和普通for的输出结果不一致
发布时间:2025-05-21 06:57:44 发布人:远客网络
一、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编程效率。