是否使用[array] .filter或_.filter

时间:2016-04-18 07:38:59

标签: javascript arrays underscore.js ecmascript-5

我的项目包含underscorejs作为依赖项。在内部我需要做很多复杂的数组操作,基本上包括我映射或过滤或减少数组。我们在Array.prototype上有原生map,filter,reduce方法。但是下划线也可以使用相同的方法。

就个人而言,使用原生方法对我来说更有意义,因为感觉更自然,代替_(array).filter(function(){})_.filter(array, function(){})这样的包裹对象。

请建议。

2 个答案:

答案 0 :(得分:2)

如果您需要一些复杂的操作,请使用_.chain()

作为下划线

所以你可以像这样链接:

 _.chain(array).filter(function(){}).pluck('name').unique();

此示例将提取过滤器中匹配数据的所有唯一名称。

与本机功能不同,该库已经过开发,使用起来更加简单,性能也不错,而且浏览器兼容性没有任何问题。

答案 1 :(得分:1)

这实际上是一个基于意见的问题。 Lodash将为您提供更好的浏览器支持和可能更好的性能,而本机功能可能更明确地说明他们正在做什么。本机函数还处理一些具有稀疏数组的边缘情况,这些情况可能与您无关,也可能与您不相关。

无论你的船漂浮着什么。

就个人而言,我一直都是为了保持一致。如果您已经使用下划线或lodash来实现本机未实现的功能(例如_.uniq_.pick),我只是继续使用_.filter等等。