我今天在这里提出了一个与键值对数组有关的问题。
我的html如下
<input type="checkbox" class="data" id="task_checked" value="1" email="a@a.com">
<input type="checkbox" class="data" id="task_checked" value="2" email="b@b.com">
我想将以下数据存储为如下数组:
"1" => "a@a.com"
"2" => "b@b.com"
我的Javascript目前如下:
var newTasksArr = new Array();
$("#task_checked:checked").each(function() {
var email = $(this).attr("email");
var id = $(this).val();
newTasksArr['id'] = email;
});
也许我正在使用Jquery .each()错误,有人可以解释一下我的问题吗?
谢谢你的阅读。 问候。
答案 0 :(得分:3)
两个问题:
在Javascript中,数组可能只有连续的数字键。如果要将字符串用作键,则需要一个Object。
如果要插入一个键值等于id
的元素,则需要newTasksArr[id] = email;
不带引号。
答案 1 :(得分:1)
你几乎是对的,你只需删除'id'
周围的引号,以便它使用id变量包含的值,而不是文字字符串'id'
。
您还应该使用对象({}
)而不是数组([]
)。
var newTasks = {};
$("#task_checked:checked").each(function() {
var email = $(this).attr("email");
var id = $(this).val();
newTasks[id] = email;
});
答案 2 :(得分:0)
避免在标记中复制ID。以下内容应该有所帮助,但是您可能需要调整jquery选择器以包含上下文。
var arr = {};
$('input:checked').each(function() {
var $t = $(this);
var email = $t.attr("email");
if (!email) {
// you may wish to do something if email is missing
}
var id = $t.val();
if (!id) {
// deal with the error
}
arr[id] = email;
});