2017年6月30日 (金)

ひらがなソート

/* ひらがなの濁音・半濁音を清音にする */
var voiceless_sound = function(s) {
  var a = [
    'がぎぐげござじずぜぞだぢづでどばびぶべぼ',
    'ぱぴぷぺぽ',
    'ぁぃぅぇぉっゃゅょゎ'
  ];
  var len = s.length, r = '';
  for (var i = 0; i < len; i++) {
    var c = s.charAt(i);
    if (a[0].indexOf(c) != -1)
      r += String.fromCharCode(s.charCodeAt(i)-1);
    else if (a[1].indexOf(c) != -1)
      r += String.fromCharCode(s.charCodeAt(i)-2);
    else if (a[2].indexOf(c) != -1)
      r += String.fromCharCode(s.charCodeAt(i)+1);
    else r += c;
  }
  return r;
};

/* 日本語文字列照合順番によるソート */
var hiragana_sort = function(arr) {
  return arr.sort(function(a, b) {
    var a1 = voiceless_sound(a);
    var b1 = voiceless_sound(b);
    if (a1 > b1) return 1;
    if (a1 < b1) return -1;
    if (a > b) return 1;
    if (a < b) return -1;
    return 0;
  });
};

| | コメント (0)

表示・非表示の期間を指定

/* 表示・非表示の期間を指定 */
jQuery.fn.extend({
  term_check: function() {
    var now = (new Date()).getTime();
    return this.each(function() {
      var a = $(this).attr('data-term');
      var aa = a.split('-');
      if (aa[0]) {
        var aaa = aa[0].split('.');
        if (aaa.length == 3) {
          var tdy = (new Date(aaa[0],aaa[1]-1,aaa[2],0,0,0,0)).getTime();
          if (now >= tdy) $(this).show(); else $(this).hide();
        }
      }
      if (aa[1]) {
        var aaa = aa[1].split('.');
        if (aaa.length == 3) {
          var tdy = (new Date(aaa[0],aaa[1]-1,aaa[2],23,59,59,999)).getTime();
          if (now > tdy) $(this).hide();
        }
      }
    });
  }
});
/* 例 */
jQuery(function($) {
  $('li').term_check();
});
/*
<li data-term="2017.6.28">表示開始日のみ指定</li>
<li data-term="-2017.7.1">最終の表示日のみ指定</li>
<li data-term="2017.6.28-2017.7.1">表示期間を指定</li>
*/

| | コメント (0)

2017年2月28日 (火)

階乗計算

/* 階乗計算 */
var factorial = function(n) {
  if (n > 0) return n*factorial(n-1);
  return 1;
};

| | コメント (0)

2017年1月12日 (木)

intval, floatval

var intval = function(s, b) {
  var n = parseInt(s, b || 10);
  return isNaN(n) ? 0 : n;
};

var floatval = function(s) {   var n = parseFloat(s);   return isNaN(n) ? 0 : n; };

| | コメント (2)

2016年12月 7日 (水)

配列の差を計算する

/*  配列の差を計算する */
Array.prototype.diff = function(arr) {
  for (var i = this.length-1; i >= 0; i--)
    if (arr.indexOf(this[i]) != -1)
      this.splice(i, 1);
  return this;
};

| | コメント (0)

«画像をぐるぐる切り替える