我想从用户输入创建一个数组。我不知道输入的细节,所以基本上我只需要用输入数据定义,初始化和填充数组,以便我以后可以做进一步的操作。
示例数组看起来像这样:
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专家?
答案 0 :(得分: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;
});