从json的两个ojbect循环

时间:2016-07-20 09:03:46

标签: jquery json

$.each(data.bahan, function(i, v) {
  $("select.bahan_asli").clone().insertAfter("#bahan:last").val(v.id_bahan).addClass('duplicate').removeClass('bahan_asli').css("display", "block").append("<input type='hidden' value='" + data['detail'].id_detail + "'>");
}); //id_detail not from data.bahan, but it from data.detail

这个json:

{
    "bahan": [{
        "id_bahan": "4",
        "nm_jenis": "katun"
    }, {
        "id_bahan": "1",
        "nm_jenis": "katun"
    }],
    "detail": [{
        "id_detail": "5",
        "id_model": "3"
    }, {
        "id_detail": "6",
        "id_model": "3"
    }]
}

错误的代码data['detail'].id_detail是什么?或者如何在一个循环中使用data['bahan']或其他方式循环两个数组data['detail'].each

3 个答案:

答案 0 :(得分:0)

你有一个数组,所以你需要循环

$.each(data.detail,function(i,v){
console.log(v.id_detail)
});

演示:https://jsfiddle.net/tb696pc9/

对于您当前的设置,如果您只想基于 bahan

进行循环,则需要以某种方式更改您的json结构

答案 1 :(得分:0)

你可以这样做来循环两个数组:

$.each([arr1, arr2], function() {
$.each(this, function(i, v) {
    // do something
});
});

替代:

$.each( arr1.concat(arr2), function(i, v) {
$("p").append(v);
 });

Fiddle

尝试过使用.each,还在继续,这是使用'for'循环的工作代码:

for (var i=0; i<json.bahan.length && json.detail.length; i++) {  
//alert("test");
alert("Data:" + json.bahan[i].id_bahan + " :" + json.bahan[i].nm_jenis);
alert("Data:" + json.detail[i].id_detail + ": " +  json.detail[i].id_model);
}

答案 2 :(得分:0)

data ['detail']是一个数组,而不是一个对象,所以/etc/hosts file 不起作用,你必须使用像data['detail'].id_detail这样的东西,其中0是你想要的索引。 / p>

如果你想同时看一下bahan和细节的元素(即看一下bahan的第一个元素和细节的第一个元素,那么看看bahan的第二个元素和第二个细节元素等等,你可以使用一个基本的for循环:

data['detail'][0].id_detail

输出:

for(var i = 0; i < data.bahan.length && i < data.detail.length; i++) {
    console.log(data.bahan[i].id_bahan);
    console.log(data.bahan[i].nm_jenis);
    console.log(data.detail[i].id_detail);
    console.log(data.detail[i].id_model);
}

然后

4
katun
5
3