简体   繁体   English

Javascript二维数组

[英]Javascript two-dimensional array

I want to create a two dimensional array in a javascript function. 我想在javascript函数中创建一个二维数组。 I found code that should do that but doesn't. 我发现代码应该这样做但不会。 I declare the array then define a function to add elements to the array which are also arrays. 我声明数组然后定义一个函数来向数组添加元素,这些元素也是数组。

    // Array function
    var card_array = new Array();
    function card_array(card_id, card_top, card_left) {
        alert('array');
        this.card_id = card_id;
        this.card_top = card_top;
        this.card_left = card_left;
    }

    // Toggle LinkCard minimize/expand
    function toggle_linkcard(toggle, card_id) {

        var icard = 0; 
        $('.linkcard').each(function () {
            card_top = $(this).position().top;
            card_left = $(this).position().left;
            card_i = $(this).attr('id');
            card_array[card_array.length++] = new card_array(card_i, card_top, card_left);
            icard++;
        });
        alert(card_array);

    }

The line of code where I add elements to the array breaks the code. 我向数组添加元素的代码行会破坏代码。

            card_array[card_array.length++] = new card_array(card_i, card_top, card_left);

What should I fix in that? 我该怎么办呢?

You defined the function's name as card_array , same name as the variable's. 您将函数的名称定义为card_array ,与变量的名称相同。 So after that line of code, you don't have any variable named card_array , only the function. 所以在那行代码之后,你没有任何名为card_array变量,只有函数。 Try changing your variable or function name. 尝试更改变量或函数名称。

The problem here is that you have two values with the same name: card_array 这里的问题是你有两个具有相同名称的值:card_array

  • A variable named which is initialized to a new Array() 一个名为的变量,初始化为一个new Array()
  • A function which takes 3 parameters 一个带3个参数的函数

The function declaration happens last and hence wins. 函数声明最后发生,因此获胜。 So when you execute the expression card_array[card_array.length++] you are doing so on a function instance, not an array. 因此,当您执行表达式card_array[card_array.length++]您在函数实例上执行此操作,而不是数组。

To fix this change the function name to a unique name. 要解决此问题,请将函数名称更改为唯一名称。

Just change this line: 只需改变这一行:

var card_array = new Array();

into: 成:

var my_card_array = new Array();

And this one: 还有这个:

card_array[card_array.length++] = new card_array(card_i, card_top, card_left);

into: 成:

my_card_array.push(new card_array(card_i, card_top, card_left));

And of course, change the alert. 当然,改变警报。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM