如何检查数组中值的出现

时间:2017-06-20 12:51:22

标签: javascript jquery html

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。

希望你得到我预期的结果。

enter image description here

需要帮助。

2 个答案:

答案 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)

发帖时有点慢,并且在此期间已经找到了答案,但无论如何只是因为没有立即将其丢弃而发布;)

&#13;
&#13;
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;
&#13;
&#13;