【发布时间】:2017-03-17 15:13:19
【问题描述】:
在我当前的项目中,我可以看到许多 _.map() 用法几乎相同,如下例所示:
var a = [1,2,3,4,5,6,7,8];
var lodashMap = _.map(a, i => {
if (i < 5) return i-1;
});
而且我看不出有任何理由不使用像这样的内置 Array.map() 方法:
var arrayMap = a.map(i => {
if (i < 5) return i-1;
});
我知道这些都不会改变原始数组,并确保结果完全相同:https://codepen.io/anon/pen/xqPMNQ
由于我们使用的是 Typescript,lodash 版本丢失了i 参数类型,所以我想改用Array.map()。 Array.map 和 _.map() 之间有什么我不知道的区别吗?
【问题讨论】:
-
Underscore/LoDash 早于
Array.prototype.map()的广泛使用。 -
旧版浏览器不实现
Array.prototype.map所以 lodash 是一种适用于新旧浏览器的 pollyfill! -
所以我们的项目目标是 es5 我可以使用
Array.map,谢谢澄清! -
一个区别是
_.map可以用在类数组对象上,而如果你想在类数组对象上调用Array#map,你需要使用尴尬的Array.prototype.map.call(obj, ...)或者[].map.call(obj, ...)。差别不大,但_.map更灵活。另外,_.map()可以用于普通对象,Array#map不能。
标签: javascript arrays underscore.js lodash