使用Underscore.js过滤出唯一值

4

这是我的 Fiddle 链接

我有一个表格,它是根据从 Ajax 响应获得的 JSON 动态创建的。

表格中有重复的条目。例如 xxx,xxx。我想将它们分组并显示为 <td data-count="some count">xxx</td>

我尝试使用 underscore.js,但似乎会破坏 rowspan 功能。

我使用 _countBy(arr)arr 转换为对象,并获得以下格式的对象。

{xxx: 2, zzz: 1}

问题:我该如何修改 generateTable() 函数以适应这种更改。我尝试按以下方式修改它

var i=0;

$.each(queryObject,function(key,value){
   if(i == 0){
       i++;
       childrenHtml += ('<td rowspan="1" data-count="'+value+'">' + key + '</td>' + '</tr>');
   }
   else{
    childrenHtml += ('<tr><td rowspan="1" data-count="'+value+'">' + key + '</td>' + '</tr>');
   }
});

但是现在似乎rowspan是个问题。我该如何修改它?
1个回答

2
您需要创建如下的函数来转换并分组您的数据:
  _.chain(data.result)
    .keys()//get all the keys buildname1 buildname2..etc
    .flatten()
    .each(function(key) {//for each key do a mapping and return a grouping.
      data.result[key] = _.chain(data.result[key]).flatten().map(function(d) {
        var key = _.chain(d).keys().first().value();
        var ob = {};
        ob[key] = _.chain(d).values().flatten().groupBy().value();//grouping by value
        return ob;
      }).value();
    }).value();

这将把您的数据集转换为此格式:
{
   "buildname1":[
      {
         "table1":{
            "xxx":[
               "xxx"
            ],
            "zzz":[
               "zzz",
               "zzz"
            ]
         }
      },
      {
         "table2":{
            "xxx":[
               "xxx"
            ],
            "yyy":[
               "yyy"
            ]
         }
      }
   ],
   "buildname2":[
      {
         "table1":{
            "xxx":[
               "xxx",
               "xxx"
            ],
            "zzz":[
               "zzz"
            ]
         }
      },
      {
         "table2":{
            "xxx":[
               "xxx",
               "xxx"
            ]
         }
      },
      {
         "table3":{
            "xxx":[
               "xxx"
            ],
            "yyy":[
               "yyy"
            ]
         }
      }
   ]
}

那么您需要更改制作表格和计算rowspan的业务逻辑。

工作代码在此处


如果我们在任何子级中有一个空数组,例如在这种情况下说 "table1": [] 表结构就会破坏。有什么想法如何解决这个问题吗? - HenonoaH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接