1

我在javascript中有一个数组。它指定图像 1-1050 的 URL。我的图像必须命名为 0001.jpg、0002.jpg 等...但是我的脚本调用 1.jpg、2.jpg...我对 JS 非常陌生,并且正在努力将此处的答案与我的脚本合并.

for (i = 0001; i < 1050; i++) {
 images.push('/images/' + i + '.jpg');
}
4

11 回答 11

9

结合你和你的链接:

for (i = 1; i < 1050; i++) {
  var str = "" + i
  var pad = "0000"
  str = pad.substring(0, pad.length - str.length) + str
  images.push('/images/' + str + '.jpg');
}

我希望这会有所帮助

于 2013-08-13T11:53:26.660 回答
2

您可以制作一个实用函数,将整数转换为 4 位字符串表示:

function intTo4digitsString(nb) {
   if(nb > 0 && nb < 10)
        return "000"+nb;
   else if(nb >= 10 && nb < 100)
        return "00"+nb;
   else if(nb >= 100 && nb < 1000)
        return "0"+nb;
}

此版本限制为 4 位数字(并且不像其他答案那样容易扩展),但我认为它更具可读性:) 然后您可以使用:

for (i = 1; i < 1050; i++) {
    images.push('/images/' + inTo4DigitsString(i) + '.jpg');
}
于 2013-08-13T11:53:32.567 回答
1

我会做这样的事情

for (i = 1; i < 1050; i++)
{
    var name = '0000' + i;
    images.push('/images/' + name.substr(name.length - 4) + '.jpg');
}

小提琴:http: //jsfiddle.net/4z5Sd/

于 2013-08-13T11:56:10.390 回答
1

谢谢马特乔。必须在阵列中添加“垫”才能充分发挥作用。

for (i = 1; i < 1050; i++) {
  var str = "" + i
  var pad = "0000"
  var padd = pad.substring(0, pad.length - str.length) + str
  images.push('/images/' + padd + '.jpg');
}
于 2013-08-13T12:07:42.377 回答
1

如果你想要一个通用的字符串格式化函数,那么这个sprintf库可能适合你。

var i, images = [];

for (i = 1; i <= 1050; i++) {
    images.push(sprintf('/images/%04d.jpg', i));
}

JSFiddle

于 2013-08-13T12:10:14.960 回答
0
zeropad = function( n,l ){ 
    var ret, d, i;
    ret = n === null || n === undefined ? '' : n.toString();
    // do we need to pad or truncate?
    d = l - ret.length;
    if (d>0) {
        for (i=0;i<d; i++) {
            ret = '0'+ret;
        }
    }
    return(ret);
};
images.push('/images/'+zeropad(i,4) + '.jpg');

从一个图书馆我写了一段时间。https://github.com/deitch/jsorm-utilities

于 2013-08-13T11:54:36.633 回答
0
function padNum(num,length)
{
    return Array((length+1)-num.toString().length).join("0")+num;
}

padNum(1,4);//0001
padNum(250,4);//0250

然后在您的代码中:

images.push('/images/' + padNum(i,4) + '.jpg');
于 2013-08-13T11:54:40.297 回答
0

怎么样...

for (i = 1; i < 1050; i++) {        
    images.push('/images/' + ('0000'.substring(0, i.toString().length)+i) + '.jpg');
}
于 2013-08-13T11:54:50.667 回答
0

我建议:

Number.prototype.leftPad = function (len) {
    var l = this.toString().length,
        d = len - l;
    return new Array(d + 1).join('0') + this.toString();
};

for (var i = 1, len = 1051; i < len; i++) {
    console.log(i.leftPad(4) + '.jpg');
}

JS 小提琴演示

参考:

于 2013-08-13T11:58:32.023 回答
0
function pad(val, len) {
    return ("000000000000000000" + val).substr(len * -1);
}

用法:

console.log(pad(1, 4) + ".jpg");
> 0001.jpg
于 2013-08-13T12:07:45.183 回答
0

那这个呢:

for (var i = 1;i<1050;i++){
    images.push("/images/"+(Array(5-(""+i).length)).join("0")+i+".jpg");
} 
于 2013-08-13T11:57:01.017 回答