我有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++)
答案 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而不是。