使用数组方法时返回方括号的函数

时间:2015-06-19 13:15:31

标签: javascript arrays function

我刚开始在一本名为Eloquent JavaScript的书的第4章中练习。练习要求我做以下事情:

  

"写一个带有两个参数的范围函数,start和end,和   返回一个数组,其中包含从开始到(和。)的所有数字   包括)结束。"

但是,当我编写以下代码时:

function range(start, end) {
  array = [];
for (var i = start; i <= end; i += 1) {
  array.push(i);
}
  return array;
}

console.log(range(5, 2));

返回方括号([])。有谁知道问题可能是什么?非常感谢!

2 个答案:

答案 0 :(得分:2)

您正在以错误的顺序传递范围索引。你不能从5到2,你需要从2到5

range(2,5)

答案 1 :(得分:0)

返回方括号表示空列表。这可能是也可能不是理想的结果。

要稍微扩展您的问题 - 您可以使用更灵活且能够生成降序列表的范围函数。请参阅下面的示例或this fiddle

function range(start, end) {
    array = [];
    // Determine order
    var delta = (start < end)? 1 : -1;

    for (var i = start; num_compare(i,end,delta); i += delta) {
        array.push(i);
    }
    return array;
}

function num_compare(a,b, delta) {
    if(delta == 0) { return false; } // No change? Avoid infinite loop.
    if(delta < 0)  { return a >= b; } // Descending. Continue while a>=b
    if(delta > 0)  { return a <= b; } // Asecending. Continue while a<=b
}

var answer = range(5,2);
console.log(answer);
document.getElementById("answer").innerHTML = answer.toString();

现在传入range(5,2);将产生[5,4,3,2]的(可能需要的)列表。

相关问题/答案包括: reversing order in for loopcomparison operators