Javascript 使用rowspan将重复值单元格合并为具有相同空间量的单个单元格

Javascript 使用rowspan将重复值单元格合并为具有相同空间量的单个单元格,javascript,jquery,html-table,Javascript,Jquery,Html Table,下面是我的值数组。此数组包含重复的值,如'ar'、'ar'、'de'、'de'等等&每个值创建一行。我想要的是如何将重复值合并到单个单元格中 var arr = ['ar', 'ar', 'ar', 'ar', 'at', 'br', 'de', 'de', 'de', 'jp', 'jp', 'us', 'us', 'us', 'us', 'us', 'us']; __ ar __ at __ br __ de __ jp __ us __ var table=do

下面是我的值数组。此数组包含重复的值,如
'ar'、'ar'、'de'、'de'
等等&每个值创建一行。我想要的是如何将重复值合并到单个单元格中

var arr = ['ar', 'ar', 'ar', 'ar', 'at', 'br', 'de', 'de', 'de', 'jp', 'jp', 'us', 'us', 'us', 'us', 'us', 'us'];

__


ar

__
at
__
br
__

de

__

jp

__



us


__
var table=document.createElement('table');
table.style.border='1px纯黑';
对于(变量i=0;i

我不知道在这里哪里可以使用rowspan。我刚刚清空了重复的值,这是在创建空的td。所以请帮帮我。提前感谢。

您需要根据列表元素的值对其进行分组:

var table = document.createElement('table');
table.style.border = '1px solid black';

for (var i = 0; i < arr.length; i++) {
    var tr = document.createElement('tr');
    table.appendChild(tr);
    var td_dmxn = document.createElement('td');
    td_dmxn.style.border = "1px solid black";
    td_dmxn.innerHTML = arr[i];
    td_dmxn.style.textAlign = "center";
    var row = arr[i],
            prevRow = arr[i - 1];
    if (prevRow && row === prevRow) {
        td_dmxn.innerHTML = '';

    } else {

    }
    $(tr).append(td_dmxn);
}
document.body.appendChild(table);
函数groupBy(数组,f){
变量组={};
array.forEach(函数(o){
var group=JSON.stringify(f(o));
组[组]=组[组]| |[];
组[组]。推送(o);
});
返回对象。键(组)。映射(函数(组){
返回组[组];
})
}
var arr=['ar','ar','ar','ar','at','br','de','de','de',',
“日本”、“日本”、“美国”、“美国”、“美国”、“美国”、“美国”、“美国”、“美国”];
arr=分组依据(arr,功能(项目){
返回[项目];
});
var table=document.createElement('table');
table.style.border='1px纯黑';
对于(变量i=0;i
这是你的电话号码。我想这就是你想要的


因为没有内置的
groupBy
构造,所以我从中借用了一个。

计算字符串在数组中的频率,并将其作为
rowspan
添加到
td\u dmxn

没有一些不必要的(关于问题)行的示例:

var arr=['ar','ar','ar','ar','at','br','de','de','de','jp','jp','us','us','us','us'],
组,
钥匙,
table=document.createElement('table'),
docFragment=document.createDocumentFragment(),
tr,
td_dmxn,
我
//对数组中的字符串进行分组和计数
组=arr.reduce(函数(l,r){
if(类型l[r]=“未定义”){
l[r]=0;
}
l[r]+=1;
返回l;
}, {});
//提取关键帧以获取出现次数
键=对象。键(组);
//添加行和单元格(包括行跨度)
对于(i=0;idocument.body.appendChild(表)与其合并单元格,为什么不从数组中删除重复项?不,我想合并我需要的单元格。空单元格也提供相等的空间。合并重复单元格时提供html预期结果。“合并”可以用多种方式解释,显示此
$(tr).append(td\u dmxn)我的表行希望像我在最新编辑中提供的那样。请有人帮帮我。这是如何创建
行span
?@charlietfl My bad。看起来我没有回答这个问题。我将更新我的答案,但我首先想知道,@htoniv,这是否回答了您的问题?我怀疑这可能是关于
行span
的一个例子。
function groupBy(array, f) {
    var groups = {};
    array.forEach(function (o) {
        var group = JSON.stringify(f(o));
        groups[group] = groups[group] || [];
        groups[group].push(o);
    });
    return Object.keys(groups).map(function (group) {
        return groups[group];
    })
}

var arr = ['ar', 'ar', 'ar', 'ar', 'at', 'br', 'de', 'de', 'de',
    'jp', 'jp', 'us', 'us', 'us', 'us', 'us', 'us'];

arr = groupBy(arr, function (item) {
   return [item];
});

var table = document.createElement('table');
table.style.border = '1px solid black';

for (var i = 0; i < arr.length; i++) {
    var tr = document.createElement('tr');
    table.appendChild(tr);
    var td_dmxn = document.createElement('td');
    td_dmxn.style.border = "1px solid black";
    td_dmxn.innerHTML = arr[i];
    td_dmxn.style.textAlign = "center";
    $(tr).append(td_dmxn);
}
document.body.appendChild(table);