GVKun编程网logo

foreach 和 map 有区别吗?(foreach和map的区别)

2

想了解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的区别)

foreach 和 map 有区别吗?(foreach和map的区别)

好吧,这更像是一个计算机科学问题,而不是基于特定语言的问题,但是 map 操作和 foreach 操作之间有区别吗?还是它们只是同一事物的不同名称?

答案1

小编典典

不同的。

foreach 遍历一个列表并对每个列表成员 执行 一些具有副作用的操作(例如将每个成员保存到数据库中)

map 遍历一个列表, 转换 该列表的每个成员,并返回另一个与转换后的成员大小相同的列表(例如将字符串列表转换为大写)

/s/g 和 /s+/g 有区别吗?

/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 errorlog配置的错误日志和php的错误日志有区别吗?

回复内容:

apache errorlog配置的错误日志和php的错误日志有区别吗?

一个是记录Apache服务器的错误,一个是记录PHP的错误。
PHP的错误日志会记录一些PHP语法、解析等导致PHP无法正常运行的错误,而Apache的错误日志是记录一些服务器的错误信息,比方某个PHP表达式忘记写分号,这个解析错误是记录PHP的错误日志里的,Apache的日志记录不到这些。

Array中 forEach() 和 map() 的区别

Array中 forEach() 和 map() 的区别

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() 有区别吗?

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() 有区别吗?的相关信息,可以在本站进行搜索。

本文标签: