Lodash partialRight padStart map Gives Bad Result(LODASH PARTIAL RIGHT PADART START MAP结果不佳)
本文介绍了LODASH PARTIAL RIGHT PADART START MAP结果不佳的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在loDash(v4.6.1)中遇到了一个奇怪的情况,我将_.padStart
的_.partialRight
函数传入_.map
回调并得到不正确的结果。
转载:
_.padStart("0", 2, "0");
// "00"
var f = _.partialRight(_.padStart, 2, "0");
f("0");
// "00"
_.map(["0"], function(s) { return f(s); });
// ["00"]
_.map(["0"], f);
// ["0"]
在深入研究执行此操作的lowash代码后,我们来到以下位置:
function arrayMap(array, iteratee) {
var index = -1,
length = array.length,
result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
此时iteratee
是上面声明的f
函数。在不进一步深入代码的情况下,我只能假设从_.partialRight
添加的参数被追加到对该函数调用的任何和所有参数之后。
现在我们到了问题部分。这是Lotash的错误/限制吗?还是有更好的方法来实现此目的?
推荐答案
经过一些研究后,看起来要实现这一点,而不将_.partialRight
中的结果函数包装在函数中,就是利用_.ary
函数来限制它将接受的参数。因此,最终结果将如下所示:
var f = _.ary(_.partialRight(_.padStart, 2, '0'), 1);
var result = _.map(["0"], f);
// result == ["00"]
并进一步降低代码使用的丑陋程度:
_.mixin({
"padStartTwoZeroes": _.ary(_.partialRight(_.padStart, 2, '0'), 1)
});
var numbers = [0, 5, 10];
var paddedNumbersAsStrings = _.map(numbers, _.padStartTwoZeroes);
但可能使用更优雅的命名或更通用的mapPadStart
,您可以手动设置要填充的数字和字符。
无论如何,lodash的功能和灵活性从未停止让我惊叹不已。
这篇关于LODASH PARTIAL RIGHT PADART START MAP结果不佳的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:LODASH PARTIAL RIGHT PADART START MAP结果不佳
基础教程推荐
猜你喜欢
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 动态更新多个选择框 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01