0

我想从用户输入创建一个数组。我不知道输入的细节,所以基本上我只需要用输入数据定义、初始化和填充数组,这样我以后可以做进一步的动作。

示例数组可能如下所示:

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

现在,我不知道如何定义、初始化和填充它,因为这不起作用:

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

任何可以提供帮助的javascript专家?

4

1 回答 1

3

将您的代码更改为

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;
});

你会得到类似的东西

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

这不是数组内的数组,而是地图内的地图,这似乎更适合您。

现在,假设您真的想要数组,那么您需要整数而不是字符串作为键。然后你可以做

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;
});
于 2013-08-01T13:23:57.690 回答