想了解foreach和map有区别吗?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于foreach和map的区别的相关问题,此外,我们还将为您介绍关于/s/g和/s+/g有区别吗?、apa
想了解foreach 和 map 有区别吗?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于foreach和map的区别的相关问题,此外,我们还将为您介绍关于/s/g 和 /s+/g 有区别吗?、apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?、Array中 forEach() 和 map() 的区别、C++ 或 C 中的 foo(void) 和 foo() 有区别吗?的新知识。
本文目录一览:- foreach 和 map 有区别吗?(foreach和map的区别)
- /s/g 和 /s+/g 有区别吗?
- apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?
- Array中 forEach() 和 map() 的区别
- C++ 或 C 中的 foo(void) 和 foo() 有区别吗?
foreach 和 map 有区别吗?(foreach和map的区别)
好吧,这更像是一个计算机科学问题,而不是基于特定语言的问题,但是 map 操作和 foreach 操作之间有区别吗?还是它们只是同一事物的不同名称?
答案1
小编典典不同的。
foreach 遍历一个列表并对每个列表成员 执行 一些具有副作用的操作(例如将每个成员保存到数据库中)
map 遍历一个列表, 转换 该列表的每个成员,并返回另一个与转换后的成员大小相同的列表(例如将字符串列表转换为大写)
/s/g 和 /s+/g 有区别吗?
当我们有一个包含空格字符的字符串时:
var str = '' A B C D EF '';
我们想从字符串中删除空格(我们想要这个:)''ABCDEF''
。
这两个:
str.replace(/\s/g, '''')
和这个:
str.replace(/\s+/g, '''')
将返回正确的结果。
这是否意味着+
在这种情况下是多余的?在这种情况下,这两个正则表达式之间是否有区别(例如,它们是否会以任何方式产生不同的结果)?
更新:性能比较 -/\s+/g
更快。见这里:http: //jsperf.com/s-vs-s
答案1
小编典典在第一个正则表达式中,每个空格字符被逐个字符替换为空字符串。
在第二个正则表达式中,由于+
.
但是,就像 0 乘以其他任何值是 0 一样,似乎这两种方法都以完全相同的方式去除空格。
如果将替换字符串更改为''#''
,则差异会变得更加清晰:
var str = '' A B C D EF '';console.log(str.replace(/\s/g, ''#'')); // ##A#B##C###D#EF#console.log(str.replace(/\s+/g, ''#'')); // #A#B#C#D#EF#
apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?
回复内容:
apache errorlog配置的错误日志和php的错误日志有区别吗?
一个是记录Apache服务器的错误,一个是记录PHP的错误。
PHP的错误日志会记录一些PHP语法、解析等导致PHP无法正常运行的错误,而Apache的错误日志是记录一些服务器的错误信息,比方某个PHP表达式忘记写分号,这个解析错误是记录PHP的错误日志里的,Apache的日志记录不到这些。
Array中 forEach() 和 map() 的区别
相关推荐:《javascript视频教程》
今天我们来看一下 Array中 Array.forEach()和 Array.map()方法之间的区别。
forEach()和map()方法通常用于遍历Array元素,但几乎没有区别,我们来一一介绍。
1.返回值
forEach()方法返回undefined ,而map()返回一个包含已转换元素的新数组。
const numbers = [1, 2, 3, 4, 5]; // 使用 forEach() const squareUsingForEach = []; numbers.forEach(x => squareUsingForEach.push(x*x)); // 使用 map() const squareUsingMap = numbers.map(x => x*x); console.log(squareUsingForEach); // [1, 4, 9, 16, 25] console.log(squareUsingMap); // [1, 4, 9, 16, 25]
由于forEach()返回undefined,所以我们需要传递一个空数组来创建一个新的转换后的数组。map()方法不存在这样的问题,它直接返回新的转换后的数组。在这种情况下,建议使用map()方法。
2.链接其他方法
map()方法输出可以与其他方法(如reduce()、sort()、filter())链接在一起,以便在一条语句中执行多个操作。
另一方面,forEach()是一个终端方法,这意味着它不能与其他方法链接,因为它返回undefined。
我们使用以下两种方法找出数组中每个元素的平方和:
onst numbers = [1, 2, 3, 4, 5]; // 使用 forEach() const squareUsingForEach = [] let sumOfSquareUsingForEach = 0; numbers.forEach(x => squareUsingForEach.push(x*x)); squareUsingForEach.forEach(square => sumOfSquareUsingForEach += square); // 使用 map() const sumOfSquareUsingMap = numbers.map(x => x*x).reduce((total, value) => total + value) ; console.log(sumOfSquareUsingForEach); // 55 console.log(sumOfSquareUsingMap); // 55
当需要多个操作时,使用forEach()方法是一项非常乏味的工作。我们可以在这种情况下使用map()方法。
3.性能
// Array: var numbers = []; for ( var i = 0; i < 1000000; i++ ) { numbers.push(Math.floor((Math.random() * 1000) + 1)); } // 1. forEach() console.time("forEach"); const squareUsingForEach = []; numbers.forEach(x => squareUsingForEach.push(x*x)); console.timeEnd("forEach"); // 2. map() console.time("map"); const squareUsingMap = numbers.map(x => x*x); console.timeEnd("map");
这是在MacBook Pro的 Google Chrome v83.0.4103.106(64位)上运行上述代码后的结果。 建议复制上面的代码,然后在自己控制台中尝试一下。
forEach: 26.596923828125ms map: 21.97998046875ms
显然,map()方法比forEach()转换元素要好。
4.中断遍历
这两种方法都不能用 break 中断,否则会引发异常:
const numbers = [1, 2, 3, 4, 5]; // break; inside forEach() const squareUsingForEach = []; numbers.forEach(x => { if(x == 3) break; // <- SyntaxError squareUsingForEach.push(x*x); }); // break; inside map() const squareUsingMap = numbers.map(x => { if(x == 3) break; // <- SyntaxError return x*x; });
上面代码会抛出 SyntaxError:
ⓧ Uncaught SyntaxError: Illegal break statement
如果需要中断遍历,则应使用简单的for循环或for-of/for-in循环。
const numbers = [1, 2, 3, 4, 5]; // break; inside for-of loop const squareUsingForEach = []; for(x of numbers){ if(x == 3) break; squareUsingForEach.push(x*x); }; console.log(squareUsingForEach); // [1, 4]
5. 最后
建议使用map()转换数组的元素,因为它语法短,可链接且性能更好。
如果不想返回的数组或不转换数组的元素,则使用forEach() 方法。
最后,如果要基于某种条件停止或中断数组的便利,则应使用简单的for循环或for-of / for-in循环。
原文地址:https://codingnconcepts.com/javascript/difference-between-foreach-and-map-in-javascript-array/作者:Ashish Lahoti译文地址:https://segmentfault.com/a/1190000038421334
更多编程相关知识,请访问:编程教学!!
以上就是Array中 forEach() 和 map() 的区别的详细内容,更多请关注php中文网其它相关文章!
C++ 或 C 中的 foo(void) 和 foo() 有区别吗?
考虑这两个函数定义:
void foo() { }void foo(void) { }
这两者有什么区别吗?如果不是,为什么会有void
争论?审美原因?
答案1
小编典典在 C 中:
void foo()
意思是“一个函数foo
采用未指定数量的未指定类型的参数”void foo(void)
意思是“一个foo
不带参数的函数”
在 C++ 中:
void foo()
意思是“一个foo
不带参数的函数”void foo(void)
意思是“一个foo
不带参数的函数”
因此,通过编写foo(void)
,我们在两种语言之间实现了相同的解释并使我们的头文件多语言(尽管我们通常需要对头文件做更多的事情以使它们真正跨语言;也就是说,将它们包装在一个extern"C"
if 我们正在编译C++)。
我们今天的关于foreach 和 map 有区别吗?和foreach和map的区别的分享就到这里,谢谢您的阅读,如果想了解更多关于/s/g 和 /s+/g 有区别吗?、apache ErrorLog配置的错误日志和PHP的错误日志有区别吗?、Array中 forEach() 和 map() 的区别、C++ 或 C 中的 foo(void) 和 foo() 有区别吗?的相关信息,可以在本站进行搜索。
本文标签: