【发布时间】:2019-01-25 21:07:25
【问题描述】:
在 Javascript 中,我一直在阅读关于何时在数组上使用 forEach 和 map 的不同文章。一般的共识似乎是,如果您只想读取数组的每个元素,请使用forEach。如果您确实想修改数据,请使用map。有些人甚至说尽可能使用map,这样更安全、更快捷。
就我而言,我想做的只是更新每个元素中的单个属性。
var arr = [{
firstName: 'Tom',
lastName: 'Washington',
fullName: undefined
}, {
firstName: 'Bill',
lastName: 'Smith',
fullName: undefined
}, {
firstName: 'Jim',
lastName: 'Jones',
fullName: undefined
}];
// arr.forEach((person) => {
// person.fullName = `${person.lastName}, ${person.firstName}`;
// });
var newArr = arr.map((person) => {
return {...person, fullName: `${person.lastName}, ${person.firstName}`};
});
console.log(arr);
console.log(newArr);
我很难理解为什么map 方法更受欢迎?通过使用forEach,我正在更新数据。使用map,我正在创建一个包含所有新元素的全新数组。我知道如果您想保留原始数组,这是首选,或者如果您想对数组执行其他操作,您现在可以选择进行链接。但如果我不关心这些,为什么不首选forEach?
【问题讨论】:
-
它们有两个不同的目的。他们都迭代的事实并不是假设他们在所有情况下都同样有用或者在所有情况下都比另一个更好的理由。
-
更安全、更快?!谁说的?不变性是函数式编程的一个概念,喜欢就跟着走,不喜欢就别走。
-
规则很简单。如果你想得到一个新数组,就拿
map,否则forEach。 -
map是函数式并提供了一个新数组,forEach只是一种迭代方法。 -
这个问题有点语境悖论。 “如果我不在乎好处,那又有什么关系呢?” - 答案是,它没有。你为什么问?
标签: javascript arrays foreach