【问题标题】:Javascript function returns entire array in position[0]Javascript函数返回位置[0]中的整个数组
【发布时间】:2012-06-29 01:28:10
【问题描述】:

我对 JS(以及其他一切)非常陌生,我正在尝试使用一个函数在其中生成一个随机数数组,然后将该数组传递回主数组。我似乎正在按照我的意愿制作数字数组,但随后整个数组被放入位置一(数组 [0]),并且数组长度读取为一个位置。 我试图在其他地方找到这个问题,但没有看到任何符合我的问题的东西。

代码如下:

//sets up an array of numbers that will be the secret code
// code = quantity of digits, number = numerals used for each digit

setSecretCode = function(code,numbers){ 

    var secretCode = "0";
    var secret = [];

    console.log("using code = "+ code); //used to verify parameters are correct
    console.log("and numbers = "+numbers); 
for (i=0; i < code; i++){ 
        secret[i] = Math.floor(Math.random()*numbers+1);
        console.log("secret#"+ i+"is"+secret[i]);
    }
    return secret;   

};



//function call - passing user defined parameters
var secret = new Array (setSecretCode(enteredCode,enteredNumber));


//printout of array for debugging
console.log("secret code is: "+ secret);      // returns appropriate looking code
console.log("secret0 = "+ secret[0]);         // whole array appears in this position
console.log("secret1 = "+ secret[2]);         // shows up as undefined

console.log(secret.length); //this illuminates problem -  array is only one position!

感谢您的任何反馈。

【问题讨论】:

    标签: javascript arrays return


    【解决方案1】:

    那是因为你在一个数组中嵌套了一个数组:setSecretCode 返回一个数组,并且当你这样做new Array (setSecretCode(enteredCode,enteredNumber));时你将该数组包装在一个新数组中

    一般来说,new Array() 在 Javascript 中几乎不需要。只需使用数组字面量 [] - 是一样的。

    【讨论】:

    • 就是这样。当你执行var secret = new Array(setSecretCode(...)) 时,你会得到一个包含函数结果的数组,它也是一个数组,即[[1,5,3,2,3,4]]。所以,secret[0] = [1,5,3,2,3,4]
    • 哈!如此简单的修复。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多