使用数组检查字符串长度

时间:2017-03-21 00:32:28

标签: javascript jquery arrays

我正在构建一个使用setIntervalnew Date()每秒更新一次的时钟。但是,我无法使用和数组将一位数字更改为两位数字。例如,我想要5小时,9分钟和5秒显示为05:09:05(在一位数字的前面添加零)。由于某些奇怪的原因,我的数组带有for循环和if语句不会这样做。这是我的代码:

$(document).ready(function () {
  /* Variables */
  var d;
  var h;
  var m;
  var s;
  var arr;
  
  setInterval(function(){
    /* Get time every second */
    d = new Date();
    h = d.getHours();
    m = d.getMinutes();
    s = d.getSeconds();
    
    /* Check for character count */
    arr = [h, m, s];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i].toString().length == 1) {
        arr[i] = '0' + arr[i];
      }
    }
    
    $('h1').html(h + ':' + m + ':' + s)
  }, 1000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>12:00:00</h1>

2 个答案:

答案 0 :(得分:4)

您忘记输出数组而不是单个 h m s

&#13;
&#13;
// isdigit example (C++)
#include <iostream>       // std::cout
#include <string>         // std::string
#include <locale>         // std::locale, std::isdigit
#include <sstream>        // std::stringstream

int main ()
{
  std::locale loc;
  std::string str="1776ad";
  if (isdigit(str[0],loc))
  {
    int year;
    std::stringstream(str) >> year;
    std::cout << "The year that followed " << year << " was " << (year+1) << ".\n";
  }
  return 0;
}
&#13;
$(document).ready(function () {
  /* Variables */
  var d;
  var h;
  var m;
  var s;
  var arr;
  
  setInterval(function(){
    /* Get time every second */
    d = new Date();
    h = d.getHours();
    m = d.getMinutes();
    s = d.getSeconds();
    
    /* Check for character count */
    arr = [h, m, s];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i].toString().length == 1) {
        arr[i] = '0' + arr[i];
      }
    }
    
    //$('h1').html(arr[0] + ':' + arr[1] + ':' + arr[2])
    $('h1').html(arr.join(':')) // join instead of outputting individually
  }, 1000);
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

当你把字符串放在数组中时,它不会直接放置对象,而是放置对象的副本。

然后在显示时,不是直接使用hms(未修改的原始对象),而是显示数组中的项目({{ 1}},...)。

我希望它有所帮助。