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;i document.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);