查找月份在JavaScript循环中出现五次的时间(日期、字符串)

Find when month appears five times in JavaScript loop (date, string)

本文关键字:五次 时间 日期 字符串 循环 JavaScript 查找      更新时间:2023-09-26

我正在构建一个工资月计算器。如果你通常每隔一周发一次工资,大多数月份都会有两张工资,但每年有两个月会有三张工资。

我的程序按预期工作,它在列表中添加了从今天开始的每天的日期(今天是星期五)。现在我想让出现五次的同月列表项目脱颖而出,简单的着色就可以了。

这可以用第二个函数for li in ul,然后是if li[i] string[4][6] === the next li[i][4][6],然后以某种方式搜索五个吗?我不确定这个逻辑会如何运作。我之所以选择[4][6],是因为在每个列表项中,月份都是三个字母的缩写,它们占据了字符串的同一部分。

如何做到这一点?

var d;
var week = 7;
function getDates() {
  for (var i = 0; i < 52; i++) {
    d = new Date();
    d.setDate(d.getDate() + week);
    $('#date').append("<li>" + d + "</li>");
    week += 7;
  };
}
$(document).ready(function() {
  getDates();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="date"></ul>

一个肮脏的例子:

var d;
var week = 7;
function getDates() {
  for (var i = 0; i < 52; i++) {
    d = new Date();
    d.setDate(d.getDate() + week);
    $('#date').append("<li data-mth='"+d.getMonth()+"'>" + d + "</li>");
    week += 7;
  }
  $('li[data-mth]').each(function(){
    var $group = $('li[data-mth="'+ $(this).data("mth") +'"]');
    if( $group.length > 4 ) $group.addClass("standOut");
  });
}
$(getDates);
.standOut{
  color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="date"></ul>

您可以将日期放在一个以月份为关键字的数组中,然后循环月份,如果该月份的计数==5,则将所有日期涂上颜色。

 var d;
    var week = 7;       
    $(document).ready(function() {
      getDates();
    });
function getDates() {
      var months = new Array;
      for (var i = 0; i < 52; i++) {
        d = new Date();
        d.setDate(d.getDate() + week);     
        var month = d.getMonth();
        if(!months[month]) months[month] = new Array;
        months[month].push(d);    
        week += 7;
      };
      plot_months(months);
    }
    function plot_months(months){
      $.each(months,function(key,month){
               var style = ""; 
             if(month.length > 4) style = "color:red;";          
                 $.each(month,function(week,date){
                   $('#date').append('<li style="'+style+'">' +date+ "</li>");
            });
      });  
    }`

查看此小提琴