Javascript 是否可以缩短此代码?

Javascript 是否可以缩短此代码?,javascript,Javascript,我有javascript代码: var newPositions = new Array(count); for (var i = 0; i < count; i++) { newPositions[i] = i; } var newPositions=新数组(计数); 对于(变量i=0;i

我有javascript代码:

var newPositions = new Array(count);
                for (var i = 0; i < count; i++) {
                    newPositions[i] = i;
                }
var newPositions=新数组(计数);
对于(变量i=0;i
是否可以将此数组从0初始化为更快计数(我的意思是在一行中)?
upd: 计数是一个执行时间可能不同的数字

upd2:不要考虑算法,这是在一行中编写代码的唯一方法。 正如@Martin Jespersen所建议的,使用某人删除的答案:

for (var i = 0, newPositions = []; i < count; newPositions[i] = i++) 
for(var i=0,newPositions=[];i
不,没有办法再优化它了:)

如果count总是一个已知的数字,那么在一行中创建javascript数组的语法是

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

聪明的答案是:

for (var i = 0; i < count; i++) newPositions[i] = i;
(变量i=0;i
但更好的答案(或问题)是:为什么这个数组对您有用?数组中保存的值可以轻松地动态计算。有了更多的信息,我们可以给你一个更好的答案。

恐怕不太容易,除非你一直使用与Jamiec的答案相同的计数

var newPositions = [];
while(count-- > 0)
     newPositions[count] = count;
这是一个稍短的代码,但代码相同,只是它会发生变化,因此可能会使用临时变量fpor来代替它。

for(var i=0,newPositions=[];ifor (var i = 0,newPositions=[]; i < count; i++) {
  newPositions[i] = i;
}
新职位[i]=i; }
这是你想做什么就做什么的“简单”方法;唯一可能的优化是将阵列初始化转化为一个函数,如下所示:

function range(count) {
    var countArray = new Array(count);
    for(var i = 0; i < count; i++) {
        countArray[i] = i;
    }
    return countArray;
}
如果您需要进行合理次数的优化,则只需进行优化,以说明编写函数所花费的额外时间。如果只做一次,那么它将是最好的


另一方面,由于for循环的设置方式,您的代码初始化了从0到count-1的新位置,而不是从0到count的新位置。将
i
更改为
i计数的来源是什么?它的价值是什么?@hunter:我重命名了我的主题以符合我的意思)您缺少newPosition声明,需要在使用前创建数组。初始化后我将其洗牌是的。。。我认为(我猜错了)原始代码的一个子集是可以理解的。我假设他知道除非“count”是常量,否则声明无法优化。循环是他主要关心的问题,没有可以应用的优化。他的问题是他的算法,而不是他的代码。@Kai那么你的优化应该是在初始化时洗牌,而不是分两步进行。你不需要像这样使用反向循环的
>0
部分。不管怎样,就像我已经提到的,它将被逆转@詹迪:什么会被逆转?
var newPositions = range(count);