我需要将两个HTML表合并在一起,然后将结果作为单独的表输出。
函数objectify()
找到每个合并前表,并按以下格式将数据放入对象中:
从这一点开始,事情变得棘手。我的standardise()
函数循环遍历每个对象,将标题和日期值放入数组中,然后调用removeDuplicates()
删除重复项(不言自明)。
然而,当把每个对象合并在一起并将数据输出到表中时,我想不出怎么做。到目前为止,我只能计算如何输出表头,如下所示:
Here是指向我的codepen的链接。任何帮助将不胜感激。
答案 0 :(得分:2)
我删除了一些你的代码,现在似乎工作了。 http://jsfiddle.net/dt1dmmk2/
function removeDuplicates(array) {
var cleanValues = [];
$.each(array, function(i, el) {
if ($.inArray(el, cleanValues) === -1) cleanValues.push(el);
});
return cleanValues;
}
var titles=[];
var totRow=0
$('.before table').each(function() {
var rowNumber=$('tr',this).length-1;
if (totRow<rowNumber)
totRow=rowNumber;
var firstCol;
var secondCol;
$('tr',this).each(function(index) {
if (index == 0) {
firstCol=$('td:first',this).text();
secondCol=$('td:last',this).text();
titles.push(firstCol,secondCol)
} else {
$('td:first',this).attr('data-col',firstCol);
$('td:last',this).attr('data-col',secondCol);
}
});
})
titles=removeDuplicates(titles);
$('.after table').append('<tr>');
for (i in titles) {
$('.after table tr:last').append('<th>' + titles[i] + '</th>');
}
for (var b=0;b<totRow;b++) {
$('.after table').append('<tr />')
for (i in titles) {
var textToFill=$('.before td[data-col="'+titles[i]+'"]:first').text();
$('.after table tr:last').append('<td>'+textToFill+ '</td>');
$('.before td[data-col="'+titles[i]+'"]:first').removeAttr('data-col')
}
}
$('td[data-col]').removeAttr('data-col'); // just to clean
当然,TR已经在 .before table 中订购,这样您就不需要重新排列新的。
答案 1 :(得分:0)
希望这个fiddle能帮助你理解你缺少的东西;)
/* please check this loop. Here you have to put your cleanYCol as well */
for (i in cleanXCol) {
$(resultsTableBody).append("<tr />")
$('tr:last',resultsTableBody).append("<td>" + cleanXCol[i] + "</td>");
// $('tr:last',resultsTableBody).append("<td>" + cleanYCol[i] + "</td>");
}