代码之家  ›  专栏  ›  技术社区  ›  ReynierPM

在Javascript对象中查找关键字并获取每个关键字的值

  •  1
  • ReynierPM  · 技术社区  · 11 年前

    我正在编写此代码:

    $.post(Routing.generate('vincularFabricanteModeloMarca'), {
        fabricantesMarcaModelo: fabricantesMarcaModelo.serializeArray(),
        paresMarcaModelo: paresMarcaModelo.serializeArray()
    }, 'json').done(function (data, textStatus, jqXHR) {
        if (data.success) {
            console.log(data.ent);
    
            $.each(data.ent, function (k, v) {
                var countries = '';
                var maker = '';
    
                var makerId = null;
                console.log(v.paisesFabricanteModeloMarca);
    
                $.each(v.paisesFabricanteModeloMarca, function (l, w) {
                    $.each(w, function (x, z) {
                        countries += (countries == '' ? '' : ', ') + z.nombrepais;
                        maker = z.nombrefabricantedistribuidor;
                        makerId = z.idfabricantedistribuidor;
                    });
    
                    var btn = '<button data-rel-id="' + makerId + '" class="btn btn-default btn-sm btn-fabricante"><i class="fa fa-close fx"></i> ' + maker + ' (' + countries + ')</button>';
                    $('td[data-modelomarcaproductofabricantes="' + v.idModeloMarca + '"]').append(btn);
                });
            });
        }
    }).fail(function () { });
    

    我如何获得 key 值,以便找到正确的 td 在这一行:

    $('td[data-modelomarcaproductofabricantes="' + (here) + '"]').append(btn);
    

    (此处) 应该是每个循环的关键,如何?请查看下面的图片以获取测试结果集,有什么建议吗?

    console.log(data.ent)

    this is what console.log(data.ent) returns

    这是作为JSON的服务器端响应

    enter image description here

    2 回复  |  直到 11 年前
        1
  •  1
  •   mido    11 年前

    看着你的代码和JSON,我觉得你错过了一个循环,

    JSON结构似乎是Array-->对象-->对象-->大堆
    并且您的循环类似于Array-->对象-->大堆

    检查这是否有效,

    $.each(Object.keys(v), function(k1,v1){  
        console.log(v[v1].paisesFabricanteModeloMarca);
    });
    
        2
  •  0
  •   ReynierPM    11 年前

    所以之后 @中22 建议我重写自己的代码并得到以下结果:

    $.each(data.ent, function (k, v) {
        var countries = '',
            maker = '',
            makerId = null;
    
        $.each(v, function (l, w) {
            $.each(w.paisesFabricanteModeloMarca, function (i, j) {
                countries += (countries == '' ? '' : ', ') + j.nombrepais;
                maker = j.nombrefabricantedistribuidor;
                makerId = j.idfabricantedistribuidor;
            });
    
            var btn = '<button data-rel-id="' + makerId + '" class="btn btn-default btn-sm btn-fabricante"><i class="fa fa-close fx"></i> ' + maker + ' (' + countries + ')</button>';
            $('td[data-modelomarcaproductofabricantes="' + l + '"]').append(btn);
        });
    });
    

    功能齐全 显然地 为我工作!希望这对其他人有所帮助。祝你好运!!