jquery 检查JSON对象内数组中的相同字符串

8hhllhi2  于 2023-04-20  发布在  jQuery
关注(0)|答案(2)|浏览(166)

我正在处理这段代码,但不知道如何解决这个问题。我有这个简单的循环:

for (i = 0; i < z.length; i++) {
  var ht = $('<div class="empresa"><div class="ordem"><div class="ordem_e">Ordem:1</div><div class="nome_e">Nome da empresa</div></div><div class="responsaveis"><p class="nome_r">Nome do cidadão</p><span class="ordem_p">Ordem:1</span><br /><p class="funcao">Contratante</p><br /><div class="cont_status"><div class="ind_assinar">Assinar</div><div class="ind_aprovar">Aprovar</div><div class="ind_aceitar">Aceitar</div></div></div></div>')

  ht.find(".ordem_e").text('Ordem:' + z[i].papel_ordem);
  ht.find(".nome_e").text(z[i].empr_nome);
  ht.find(".nome_r").text(z[i].cont_nome);
  ht.find(".ordem_p").text("Ordem:" + z[i].cont_ordem);
  ht.find(".funcao").text(z[i].decl_identificacao);

  $(".insere_empr").append(ht);
}

它只是创建了一些显示一些属性的对象,就像这个屏幕截图一样:

代码中的“z”是从 AJAX 调用返回的JSON。它是一个包含对象的数组,例如[{...},{...},{...},{...}]
那么,我如何比较一个元素(在我的代码中的.nome_e文本,或图片中的“Magna”名称)来检查相同的元素?然后我想合并具有相同名称的html对象(再次,基于屏幕截图,“Magna”将在内部获得两个框)。
我仍然在尝试一些方法来找到一个解决方案,但似乎我迷失了现在。我会继续尝试,但如果有人能告诉我一些如何解决这个问题的想法,这将有很大的帮助。
先谢谢你,如果这篇文章看起来很长,我很抱歉。我试着把我的问题说清楚。

gk7wooem

gk7wooem1#

你可以建立一个已经使用过的键(对象)的索引来忽略相同的元素:

let idx = {};
for (i = 0; i < z.length; i++) {
    if (!idx[z[i].empr_nome]) {
        idx[z[i].empr_nome] = 1;
        var ht = $('<div class="empresa"><div class="ordem"><div class="ordem_e">Ordem:1</div><div class="nome_e">Nome da empresa</div></div><div class="responsaveis"><p class="nome_r">Nome do cidadão</p><span class="ordem_p">Ordem:1</span><br /><p class="funcao">Contratante</p><br /><div class="cont_status"><div class="ind_assinar">Assinar</div><div class="ind_aprovar">Aprovar</div><div class="ind_aceitar">Aceitar</div></div></div></div>');
egdjgwm8

egdjgwm82#

所以,我把它固定成这样:

var wha = [];

        for (i=0; i<z.length; i++){

        var ht = $('<div class="empresa"><div class="ordem"><div class="ordem_e">Ordem:1</div><div class="nome_e">Nome da empresa</div></div><div class="responsaveis"><p class="nome_r">Nome do cidadão</p><span class="ordem_p">Ordem:1</span><br /><p class="funcao">Contratante</p><br /><div class="cont_status"><div class="ind_assinar">Assinar</div><div class="ind_aprovar">Aprovar</div><div class="ind_aceitar">Aceitar</div></div></div></div>')

          ht.find(".ordem_e").text('Ordem:' + z[i].papel_ordem);
          ht.find(".nome_e").text(z[i].empr_nome);
          var gh = ht.find(".nome_e").text();
          ht.find(".nome_r").text(z[i].cont_nome);
          ht.find(".ordem_p").text("Ordem:" + z[i].cont_ordem);
          ht.find(".funcao").text(z[i].decl_identificacao);

          //console.log(z[i].empr_nome);
          console.log(wha);
          console.log($.inArray(gh, wha));

          if($.inArray(gh, wha) == -1){
            wha.push(z[i].empr_nome);
          } else{
            ht.find(".nome_e").parents().css("background-color", "orange");
          }

          $(".insere_empr").append(ht);

        }

创建一个空数组,将item字符串与该数组进行比较。如果-1,则推它(仅供参考)。顺便说一下,橙子bkg只是为了测试。现在我只需要弄清楚如何访问上层结构。也许我稍后会问。

相关问题