简体   繁体   English

如何创建一个数组数组并将数据填充到JavaScript中?

[英]How to create an array of array and populate data into it in JavaScript?

I want to create an array from user input. 我想根据用户输入创建一个数组。 I dont know the details of input, so basically I just need to define, initialize and populate the array with input data, so that I can do further actions later. 我不知道输入的详细信息,因此基本上我只需要用输入数据定义,初始化和填充数组,以便以后可以做进一步的操作。

example array could look something like this: 示例数组可能如下所示:

var input = ["1" : ["0": "Apple",
                    "1": "Orange"],
             "2" : ["0", "Cat",
                    "1", "Dog"],
             "4" : ["0", "Coffee"]
        ];

Now, I dont know how to define, initialize and populate it, as this is not working: 现在,我不知道如何定义,初始化和填充它,因为这不起作用:

    var input = [[]];
    $('.input').each(function(index, element) {
        var element_id = this.id;
        var element_value = $.trim(this.value);
        input[element_id][index] = element_value;
    });

Any javascript experts who could help? 任何有帮助的javascript专家?

Change your code to 将您的代码更改为

var input = {};
$('.input').each(function(index, element) {
    var element_id = this.id;
    var element_value = $.trim(this.value);
    (input[element_id]||(input[element_id]={}))[index] = element_value;
});

You'll get something like 你会得到类似

    {"1" : {"0": "Apple",
                "1": "Orange"},
         "2" : {"0", "Cat",
                "1", "Dog"},
         "4" : {"0", "Coffee"}
    };

which isn't arrays inside arrays but maps inside maps, which seems to be more indicated for you. 这不是数组内部的数组,而是地图内部的map,这似乎更适合您。

Now, suppose you really want arrays, then instead of strings as keys you need to have integers. 现在,假设您确实需要数组,那么需要使用整数而不是字符串作为键。 Then you may do 那你可以做

var input = [];
$('.input').each(function(index, element) {
    var element_id = parseInt(this.id,10);
    var element_value = parseInt($.trim(this.value),10);
    (input[element_id]||(input[element_id]=[]))[index] = element_value;
});

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

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