无法从每个语句中获取正确的值

时间:2015-04-22 18:30:03

标签: javascript jquery

我有一个对象(称为allUserInfo,就像这样:

Object
{
available_client_ids: Array[2]
0: "demo"
1: "4532t78"
available_client_names: Array[2]
0: "Demo"
1: "Bobs Bakery"
email: "jmr@example.com
}

我需要获得available_client_idsavailable_client_names,但要继续以未定义或更糟的方式返回。我正在尝试这样的事情:

$.each(allUserInfo, function(index, value) {
$('.clients_available3').append("<option>" + index.available_client_names + "</option>");
   });

这给了我太多未定义的东西附加到select(clients_available3)。它可能需要像:

$.each(allUserInfo.available_client_names, function(index, value) {
$('.clients_available3').append("<option>" + index.available_client_names + "</option>");
   });

但这也不起作用。

修改

如果我这样做,

   $.each(allUserInfo.available_client_names, function(index, value) {
                $('.clients_available3').append("<option>" + value + " </option>");
});

这有效并给了我客户名称,但我没有办法获得ID。我希望我可以做这样的事情,所以我可以把它们都拿到,但这不起作用:

 $.each(allUserInfo, function(index, value) {
                $('.clients_available3').append("<option value="+available_client_ids+">" + available_client_names.value + " </option>");
});

3 个答案:

答案 0 :(得分:2)

你在each()循环中使用了错误的东西......

function(index, value) { }

index值是您当前正在对象中迭代的 KEY 。在您的情况下,它将是“available_clients_ids”,“available_client_names”和“email”。

value参数将是这些键的值,例如包含“demo”和“4532t78”的数组

由于你已经拥有了一个基本上是嵌套数组(一个具有多个属性的对象,每个属性包含一个数组),你需要更像这样的东西:

$.each(allUserInfo.available_client_names, function(i, val) {
   ...
});
$.each(allUserInfo.available_client_ids, function(i, val) {
   ...
});

答案 1 :(得分:1)

使用原生JavaScript循环:

for(var i=0; i<allUserInfo.available_client_names.length){
    var name = allUserInfo.available_client_names[i];
    var id = allUserInfo.available_client_ids[i];
    $('.clients_available3').append("<option value='"+id+"'>" + name + "</option>");
}

或者将原始代码更新为以下内容:

$.each(allUserInfo.available_client_names, function(index, value) {
   $('.clients_available3').append("<option value='"+allUserInfo.available_client_ids[index]+"'>" + available_client_names[index] + "</option>");
   });

答案 2 :(得分:0)

您可能希望将.each与其两个参数函数调用一起使用。 我的意思是:

$.each(allUserInfo.available_client_names, function(index, value) {
   $('.clients_available3').append("<option>" + available_client_names[index] + "</option>");
   });

或者您可以直接使用迭代的值,例如:

$.each(allUserInfo.available_client_names, function(index, value) {
$('.clients_available3').append("<option>" + value + "</option>");
   });