var arr = ['09:30:00', '09:45:00', '10:00:00', '10:15:00', '10:30:00', '10:45:00', '11:00:00', '11:15:00'];
var $elem = $("<table>", {
'class': 'table table-responsive table-bordered overview-table',
'border': '1'
});
var $tbody = $("<tbody>", {
'class': 'overview_table_td'
}).appendTo($elem);
$.each(arr, function(i) {
$tbodyTR = $("<tr>", {}).appendTo($tbody);
if (i % 4 == 0) {
$tbodyTH = $("<th>", {
'scope': 'row',
'html': arr[i].slice(0, -6),
'rowspan': '4'
}).appendTo($tbodyTR);
}
$tbodyTH = $("<th>", {
'scope': 'row',
'html': arr[i].slice(3, 5)
}).appendTo($tbodyTR);
});
$(".overview").html($elem);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="overview">
</div>
当我i % 4 == 0
时,我得到了意想不到的输出,但是我可以从数组中实现09次出现多少次。
如果有任何解决方案吗?
预期结果
查看数组中是否有09:30:00,09:45:00。所以在切片后这个值我得到2次09.所以我想在i % 2 == 0
中使用那个计数器,你可以在切片后看到我可以得到10次,4次,如果条件是i % 4 == 0
< / p>
所以我想在条件2时间运行时它是09和4时间时它是10。
希望你得到我预期的结果。
需要帮助。
答案 0 :(得分:3)
您可以尝试保存前一个小时,并在更改后将新单元格添加到第一列。在第一次迭代中,String result = "your result here";
try {
JSONArray data = new JSONArray(result);
if(data.length() > 0){
for (int i =0; i < data.length(); i++){
String id = data.getJSONObject(i).getString("id");
String name = data.getJSONObject(i).getString("name");
String howmuch = data.getJSONObject(i).getString("howmuch");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
和old
未定义,因此符合oldTH
意见。在每个新单元格之后,您还应该更新上一个单元格的hr != old
属性。即使在rowspan
完成后,也必须完成此更新。
请参阅以下代码:
.each()
var arr = ['09:30:00', '09:45:00', '10:00:00', '10:15:00', '10:30:00', '10:45:00', '11:00:00', '11:15:00'];
var $elem = $("<table>", {
'class': 'table table-responsive table-bordered overview-table',
'border': '1'
});
var $tbody = $("<tbody>", {
'class': 'overview_table_td'
}).appendTo($elem);
var counter = 0;
var old, oldTH;
$.each(arr, function(i) {
$tbodyTR = $("<tr>", {}).appendTo($tbody);
var hr = arr[i].slice(0, -6);
if(hr != old){
if(counter > 1){
oldTH.attr("rowspan", counter);
}
old = hr;
counter = 0;
$tbodyTH = $("<th>", {
'scope': 'row',
'html': hr,
}).appendTo($tbodyTR);
oldTH = $tbodyTH;
}
++counter;
$tbodyTH = $("<th>", {
'scope': 'row',
'html': arr[i].slice(3, 5)
}).appendTo($tbodyTR);
});
if(counter > 1){
oldTH.attr("rowspan", counter);
}
$(".overview").html($elem);
答案 1 :(得分:1)
发帖时有点慢,并且在此期间已经找到了答案,但无论如何只是因为没有立即将其丢弃而发布;)
var arr = ['09:30:00', '09:45:00', '10:00:00', '10:15:00', '10:30:00', '10:45:00', '11:00:00', '11:15:00'];
var $elem = $("<table>", {
'class': 'table table-responsive table-bordered overview-table',
'border': '1'
});
var $tbody = $("<tbody>", {
'class': 'overview_table_td'
}).appendTo($elem);
var $thHour;
$.each(arr, function(i,val) {
$tbodyTR = $("<tr>", {}).appendTo($tbody);
var parts = val.split(':'),
hour = parts[0];
if ($thHour && $thHour.hour === hour)
$thHour.rows++;
else {
if($thHour)$thHour.end();
$thHour = $("<th>", {
'scope': 'row',
'html': hour,
}).appendTo($tbodyTR);
$thHour.hour = hour;
$thHour.rows = 1;
$thHour.end = function(){this.attr('rowspan', this.rows);}
}
$tbodyTH = $("<th>", {
'scope': 'row',
'html': parts[1]
}).appendTo($tbodyTR);
});
$thHour.end();
$(".overview").html($elem);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="overview">
</div>
&#13;