麻烦推送到JS中的数组

时间:2013-09-01 15:26:19

标签: javascript arrays return push undefined

下面只是我的代码的一部分,但我知道这是有问题的,因为我不能让它返回除'undefined'之外的任何值。我已经在这几个小时了,无法弄明白。

我希望能够输入一个数字并将其因子推送到数组中。我通过提醒数组中的第一项来测试它,但我什么都没得到。我相信这很容易,但我无法理解。这是代码:

    var numberInQuestion = prompt("Of what number are you wanting to find the largest        prime factor?");

    //determine factors and push to array for later use
    var factorsArray = [];
    function factors(numberInQuestion){
        for(var i = 2; i < numberInQuestion-1; i++){
            if(numberInQuestion % i === 0){
                return factorsArray.push[i];
            } else {
                continue;
            }
        }
    };
    factors(numberInQuestion);
    alert(factorsArray[0]);

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

  • 您只能返回一个
  • 您必须使用(),而不是[]来拨打push
  • factorsArray应该是factors的本地(将定义放在函数中)
  • else { continue; }无用

以下是完全更正的代码:

var numberInQuestion = prompt("Of what number are you wanting to find the factors of?");

//determine factors
function factors(numberInQuestion){
    var factorsArray = []; // make it local
    for (var i = 2; i < numberInQuestion-1; i++){
        if(numberInQuestion % i === 0){
            factorsArray.push(i); // use (), and don't return here
        } // no need for else { continue; } because it's a loop anyway
    }
    return factorsArray; // return at the end
};
var result = factors(numberInQuestion); // assign the result to a variable
alert(result);

<强> Here's a JSFiddle

答案 1 :(得分:1)

推送语法中有错误。正确的推送语法是 -

factorsArray.push(i);

在找到第一个除数后立即从函数返回也不会给出完整列表。你可能想在找到所有除数后返回。

考虑到以上所有因素,您应该按照以下步骤重写您的功能 -

function factors(numberInQuestion){

    for(var i = 2; i < numberInQuestion - 1; i++){
        if(numberInQuestion % i === 0) {
            factorsArray.push(i);
        }
    }
}

你会没事的。

答案 2 :(得分:0)

您已经对此进行了编码,以便在您找到第一个因素时,您的函数会立即返回。只需删除该语句中的return关键字。 (什么&#34;返回&#34;表示在JavaScript和其他类似语言中是立即退出函数并从调用函数的位置继续。)

哦,你也可以用括号来调用函数(比如.push()),而不是方括号。

答案 3 :(得分:0)

推送到阵列时,该函数不应返回。执行循环后返回数组。 <{1}}子句也是不必要的。

else

鉴于示例的目的,必须考虑两个项目

代码不确定该数字是否实际是素数。代码将返回可能的最小因子,因为循环从2开始并递增,然后返回数组中的第一个元素。最大的因素实际上是数组中的最后一个元素。我已经纠正了这个例子,找到了最重要的因素。你可以通过这个小提琴来测试它:http://jsfiddle.net/whKGB/1/