是否可以缩短此代码?

时间:2011-01-12 13:48:29

标签: javascript

我有javascript代码:

var newPositions = new Array(count);
                for (var i = 0; i < count; i++) {
                    newPositions[i] = i;
                }

是否可以从0初始化此数组以更快地计数(我的意思是单行)? UPD: count是执行时间可能不同的数字

upd2:不要考虑算法,只能用一行编写这段代码。 正如@Martin Jespersen建议并使用某人删除的答案:

for (var i = 0, newPositions = []; i < count; newPositions[i] = i++) 

6 个答案:

答案 0 :(得分:4)

for (var i = 0,newPositions=[]; i < count; i++) {
  newPositions[i] = i;
}

答案 1 :(得分:1)

不,没有办法再对它进行优化:)

答案 2 :(得分:1)

这就像你想做的那样“轻松”;唯一可能的优化是将数组初始化转换为函数,如下所示:

function range(count) {
    var countArray = new Array(count);
    for(var i = 0; i < count; i++) {
        countArray[i] = i;
    }
    return countArray;
}

然后将其分配给您的变量:

var newPositions = range(count);

如果您需要进行合理次数的优化,则只需进行优化,以考虑编码功能所需的额外时间。如果它已经完成了一次那么它就会达到它的效果。

除此之外,由于你的for循环设置方式,你已经将newPositions从0初始化为count-1而不是0来计算代码。如果要在数组中包含count值,请在for循环中将i < count更改为i <= count

答案 3 :(得分:0)

如果count始终是已知数字,则在1行中创建javascript数组的语法是

var myArray = [0,1,2,3,4,5,6,7]; //assuming count was 8

答案 4 :(得分:0)

聪明屁股的答案是:

for (var i = 0; i < count; i++) newPositions[i] = i;

但更好的答案(或问题)是:为什么这个数组对你有用?该数组保存的值可以在运行中轻松计算。有了更多信息,我们可以为您提供更好的答案。

答案 5 :(得分:0)

除非你使用与Jamiec的答案相同的计数,否则我不会害怕。

var newPositions = [];
while(count-- > 0)
     newPositions[count] = count;

这有点短,但是相同的代码除了它改变了cout所以也许使用temp var fpor而不是。