在Javascript中访问变量名中的计数器(代码内部)

时间:2011-09-02 11:51:11

标签: javascript variables padding

我希望做一些非常类似于以下PHP代码但在javascipt中的东西:

for ($weenumber = 1; $weenumber <= 30; $weenumber++)
{ 
    $weenumber = str_pad($weenumber, 2, "0", STR_PAD_LEFT);
    echo $_POST["entry{$weenumber}_cash"];
} 

基本上访问用尾随0填充的循环数,如果小于10,但我不知道JS中的语法来执行此操作:(

对不起noob风格的问题

7 个答案:

答案 0 :(得分:2)

我认为你的意思是领先的零而不是尾随零......

例如,您可以使用条件运算符:

(n < 10 ? '0' : '') + n

您还可以实现通用功能:

function padLeft(str, len, ch) {
  while (str.length < len) str = ch + str;
  return str;
}

要在Javascript中按名称访问对象属性,请使用括号。例如:

var value = obj['entry' + (n < 10 ? '0' : '') + n + '_cash'];

如果n包含4,则与obj.entry04_cash相同。

答案 1 :(得分:0)

是否有特定的功能来执行此操作,如果您知道如何使用if子句,并且知道如何执行字符串连接(如果您没有使用+运算符),那么您应该能够轻松地手动滚动自己的str_pad版本(适用于100以下的数字)。

考虑所涉及的案例(只有两个)以及在任何一种情况下你需要输出的内容。

答案 2 :(得分:0)

这是你应该使用的代码:

for(var i=0; i<30; i++){
    document.writeln(i<10 ? "0"+i : i);
}

使用您想要处理数据的任何函数更改document.writeln()

答案 3 :(得分:0)

for (weenumber = 1; weenumber <= 30; weenumber++) { 
    weenumber = str_pad(weenumber, 2, "0", STR_PAD_LEFT);
} 

对于str_pad()函数,您可以使用PHPJS库: http://phpjs.org/functions/str_pad:525

这个库也可以轻松地从php过渡到javascript。看看吧。

答案 4 :(得分:0)

for(var i=0; i<30; i++)
{
   var index = i;
   if(i<10) index = "0" + index
   var elem = document.getElementById("entry"+index);
}

答案 5 :(得分:0)

这是一个可用于零重写的功能:

function zeroPad(nr,base){
        var  len = (String(base).length - String(nr).length)+1;
        return len > 0? new Array(len).join('0')+nr : nr;
}
//usage
alert(zeroPad(3,10)); //=> 03

或扩展数字原型

Number.prototype.zeroPad = Number.prototype.zeroPad ||
    function(base){
            var nr = this, len = (String(base).length - String(nr).length)+1;
            return len > 0? new Array(len).join('0')+nr : nr;
    };
//usage
var num = 1;
alert(num.zeroPad(100)); //=> 001

现在对于变量名称部分:如果它是一个全局变量(不建议),那个变量是global object的属性,在window的浏览器中。您可以使用等效的window['myvariable'+myJustResolvedNumericValue]通过其动态名称获取变量。在对象(实例)中,您可以使用相同的括号表示法:myObject['myvariable'+myJustResolvedNumericValue]

使用此信息,在javascript中您的功能可能如下所示:

for (var weenumber = 1; weenumber <= 30; weenumber++)
{ 
    // execute something using the variable that uses the counter in the
    // variable name as parameter
    executeSomeFunction(window['entry'+weenumber.padLeft(10) + '_cash']);
} 

答案 6 :(得分:0)

var someArray = [/*...*/];
for (var i= 1;i<= 30;i++)
    { 
        var weenumber = i+"";
        for(var j=weenumber.length;j<2;j++)
            weenumber = "0" + weenumber;
        var key = "entry" + weenumber + "_cash";
        document.write(someArray[key]);
    }