Javascript键值数组存储

时间:2013-02-20 16:44:48

标签: javascript jquery html

我今天在这里提出了一个与键值对数组有关的问题。

我的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()错误,有人可以解释一下我的问题吗?

谢谢你的阅读。 问候。

3 个答案:

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