如何在javascript中返回整数乘以3的数组?

时间:2020-03-06 20:18:09

标签: javascript

我认为我的问题可能是我的 i 值和 start 的值相同...所以我的循环停止得太早了。为了解决该问题,我尝试将“ while(i

function triple_sequence(start, length) {

    var res = [start];
    var i = start;
    while (i < length) {
        i *= 3;    
        res.push(i);
        i++;
    }
    return res;
}

console.log(triple_sequence(2, 4));
//[2, 6, 18, 54]

3 个答案:

答案 0 :(得分:1)

您正在检查i,而不是结果的长度。更改

while (i < length)

while (res.length < length)

此外,请勿将i++放入循环中。您已经用i更新i *= 3;

答案 1 :(得分:1)

使用索引变量i并将其用作数组的值会使您感到困惑。

您可以使用所需的长度检查数组的长度,并使用value变量进行乘法。

此值以后无需增加。

function triple_sequence(start, length) {
    var res = [start],
        value = start;

    while (res.length < length) {
        value *= 3;
        res.push(value);
    }
    return res;
}

console.log(triple_sequence(2, 4)); // [2, 6, 18, 54]

更短的方法

function triple_sequence(start, length) {
    return Array.from({ length }, (_, i) => start * 3 ** i);
}

console.log(triple_sequence(2, 4)); // [2, 6, 18, 54]

答案 2 :(得分:0)

您的代码中存在两个错误,最严重的错误是您将i乘以3并递增。这段代码效果更好:

function triple_sequence(start, length) {

    var res = [start];
    var i = start;
    while (i < length) {
        i++;
        res.push(i * 3);

    }
    return res;
} 

triple_sequence3(0, 3); // [0, 3, 6, 9]