【发布时间】:2017-04-05 06:56:14
【问题描述】:
我有一个具有以下结构的数据表。
我想创建一个键值多维数组。即
main_array = {
user_id = {
'name' : 'XYZ',
'email' : 'xyz@com'
}
包含列的复选框类似于:
<input type="checkbox" name="id" value="3" data-name="xyz" data-email="xyz@com">
到目前为止我创建的脚本:
var rows_selected = [];
var $i = 0;
$("input:checked", rows).each(function(){
var val = $(this).val();
if($.inArray($(this).val(),rows_selected) == -1 ){
rows_selected.push($(this).val());
rows_selected[$i][val] = [];
rows_selected[$i][val].push({'name':$(this).attr('data-name'),'email':$(this).attr('data-email')});
}
$i++;
});
但是这个脚本总是抛出一个错误:Cannot read property 'push' of undefined
那么是否可以在 javascript 中创建一个键值对,将 user_id 作为键和名称、电子邮件数组作为其值推送到主结果数组中?我们也可以使用 javascript 拼接那个特定的键吗?
感谢任何帮助。谢谢
【问题讨论】:
-
你没有数组 - 你有一个对象
-
^^ ...其有效表达式将在
user_id之后使用:,而不是=。 -
@Weedoze 那么如何获得所需的输出?
-
@ArthParikh 您应该创建一个对象并分配值,而不是使用 push
-
您的代码似乎与您说想要的结构无关,尤其是因为名称不同。
rows_selected应该是main_array吗?为什么要尝试向字符串添加属性? (val的结果是一个字符串;然后您尝试通过rows_selected[$i][val] = [];行上的赋值将属性添加到您刚刚作为字符串推送的条目中。)
标签: javascript jquery arrays multidimensional-array