【问题标题】:Checking for identical strings in array inside Json object检查 Json 对象内数组中的相同字符串
【发布时间】:2018-06-18 20:14:34
【问题描述】:

好的,所以我正在使用此代码,但不知道如何解决上述问题。我得到了这个简单的循环:

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”会在里面有两个框)。

我仍在尝试一些方法来找到解决方案,但它看起来我现在迷路了。会继续尝试,但如果有人能指出一些关于如何解决这个问题的想法,那将有很大帮助:D

在此先感谢,如果帖子看到很长,请见谅。我试图把我的问题说清楚。

【问题讨论】:

  • 目前还不完全清楚您要做什么。我是否认为您需要做的是通过属性empr_nomez 上的内容分组
  • 是的,我需要用相同的 empr_nome 对两个元素进行分组(在 Magna 的情况下)

标签: jquery sorting


【解决方案1】:

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

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>');

【讨论】:

    【解决方案2】:

    所以,我把它修好了:

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多