如何使用带前导0的underscore.js生成一系列数字
How generate a range of numbers using underscore.js with leading 0s?
我一直在尝试为下拉列表生成值,用户可以在下拉列表中选择小时、分钟。
为了得到分钟的可能值,我使用了这个:
_.range(1, 61)
这会生成类似的阵列
[1, 2, 3 ... 60]
但我要求它是的形式
[01, 02, 03 ... 60]
有没有一种使用下划线的干净方法?。
在FF中,以及很快在其他浏览器中,使用padStart
:
_.range(1, 61) . map(num => String(num).padStart(2, '0'))
另一种方法是
_.range(1, 61) . map(num => ('0' + num).slice(-2));
这会在所有数字的开头加一个零,但只取结果的最后两个字符。
一种函数方法是编写一个高阶函数,该函数取长度并返回一个将其输入填充到该长度的函数:
function make_padder(len) {
return str => ('0000000000000' + str).slice(-len);
}
现在你可以写了
_.range(1,61) . map(make_padder(2))
将其放在javascript文件的顶部。。。
Number.prototype.pad = function (count) {
var num = this.valueOf();
var ret = "";
for (var i = 0; i < count - num.toString().length; i++) {
ret += "0";
}
ret += num;
return ret;
}
然后返回。。。
_.range(1, 61).map(function (num) { return num.pad(2) })
这将给出一个长度为2的前导0的字符串数组
只有字符串数组才有可能:
var
range = _.range(1, 61),
i,
arr = [];
for (i in range) {
if (range[i] <= 9) {
arr.push('0' + range[i]);
}
else {
arr.push('' + range[i]);
}
}
结果:
console.log(arr); // ["01", "02" ... "61"]
面向对象JavaScript-第二版当一个数字以0开头时,它被认为是八进制数字。对于例如,八进制0377是十进制255:
var n3 = 0377; typeof n3; // "number" n3; // 255
上例中的最后一行打印小数八进制值的表示。
parseInt('0377', 8); // 255
ECMAScript 5删除八进制文字值并避免混淆具有CCD_ 2和未指定基数。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 如何使用带前导0的underscore.js生成一系列数字
- JS:如何在使用 Math.random() 时排除一系列值
- 使用 JS 播放一系列图像,使用 $timeout 来安排帧
- 从下划线.js中的数组返回一系列值
- JS 正则表达式以排除一系列特定数字
- 如何创建一系列基于SQL树自动填充的JS/PHP下拉菜单?
- 在js文件中有一系列命名函数是不好的做法吗?
- 如何在vue.js中过滤一系列数字
- Node.Js中的异步问题-如何执行一系列动作
- 如何创建一系列jquery/js动画
- Pixi.js:这一系列复杂的位置/alpha/比例数字是如何生成的?