ES6和lodash中的地图方法有什么区别?

8

是否存在一种比另一种更强大的方法?我应该坚持使用lodash还是只使用ES6的map方法?


3
我理解你所说的ES6 map是指数组中可用的旧版map。答案是两者几乎没有什么区别。Lodash有自己的map函数,几乎可以完全替代浏览器原生的map函数,对于向后兼容非常有用。除此之外...一个直接在数组上调用,另一个通过lodash调用。Lodash还可以迭代对象等一些额外的功能。 - VLAZ
所以lodash可以映射对象?知道这点很好。 - Funk Soul Ninja
2
是的,尽管 _.map(obj, func) 可以映射 并返回一个数组,但有一个单独的 _.mapObject 可以生成一个对象。 - VLAZ
3个回答

10

除了 @georg 提到使用 lodash 的 _.map 作为 _.property 的简写的可能性之外,lodash 的 map 可以用于任何可迭代对象,而 ES6 的 map 只能用于数组。


7

lodash 可以处理未定义的情况

let a = undefined

_.map(a, (e) => {console.log("hello")})
// vs    
a.map((e) => {console.log('this is an error')}). //undefined error 

5

它们都符合ECMA-262规范,所以它们是相同的。然而,出于可移植性(以及可能的性能/可读性),我个人更喜欢内置的ES6 map方法。


4
不,它们并不相同。_.map能够做的远远超过了标准的map函数。 - georg
1
@georg请详细说明。 - matanso
6
@matanso,你可以使用lodash的简写语法。例如,如果你有一个人的数组,格式如{name: "bob", age: 42},你可以使用_.map(people, 'name'),这是_.property('name')的简写形式,它将返回只包含人名的数组。 - VLAZ
1
@georg,你最好为此写一个答案。 - Siraj Alam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接