`
zhyt710
  • 浏览: 205935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js常用算法

阅读更多

1.格式化数字 该函数格式化数字样式为带有千分号和制定小数点数位的格式。

function fomatNumber(s, n) {
    n = n >= 0 && n <= 20 ? n : 2;
    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
    var l = s.split(".")[0].split("").reverse(),
    r = s.split(".")[1];
    t = "";
    for(i = 0; i < l.length; i ++ ) {
      t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
    }
    if( n==0 ) 
        return t.split("").reverse().join("")
    else
        return t.split("").reverse().join("") + "." + r;
}

 

2.2010-10-13  当应用ajax时,iframe 在ie里面不能刷新 ,或者称之为有缓存我算是领教过了。本来应该轻松的今天浪费了我太多的时间。

如果A网页里有iframe,而这个iframe的src只想B页。当A刷新时,B中有ajax请求的话,则B不会刷新。只是在IE中才如此。解决办法唯有让iframe的src引用页的ajax请求的url每次都不一样 。在手头上的项目,不想让每个人都去改自己的页面去。所以我的办法只能是去更改jquery的源代码,让它的ajax请求每次都自动在后面加一个随机参数了。

 

3.2010-10-15 本来以为没有办法。但今天一查,却给了自己一个惊喜。原来在主页面也能判断何时该页面中的iframe加载完毕 ,从而可以为应用提供类似假滚动条的东西来增强用户体验。对于现在我设计的以iframe为单位的页面架构提供了以后让人无可挑剔的体验。方法可参考如下代码

<html>
 <head>
 </head>

 <body>
  
<div id="msg"></div>
<iframe id="detail" name="detail"></iframe>

 </body>

<script>
/**/
var div = document.getElementById("msg");
div.innerHTML = "数据加载中...";

var iframe = document.getElementById("detail");
iframe.width="100%";
iframe.height="100%";
iframe.src = "http://163.com";


if (iframe.attachEvent){
    iframe.attachEvent("onload", function(){
        div.style.display = "none";
    });
} else {
    iframe.onload = function(){
        div.style.display = "none";
    };
}
</script>

</html>

 

4.获得某个月天数的算法 。原本是给组内人员写个取得上月同期和上周同期的公用方法。取得上月同期,不得不先写这个算法了。

/**
 * get days number in month
 * @param year
 * @param month
 * @return
 */
function baseGetDatesInMonth(year, month) {
	if(parseInt(month) == 1 || parseInt(month) == 3 || parseInt(month) == 5 || parseInt(month) == 7
	     || parseInt(month) == 8 || parseInt(month) == 10 || parseInt(month) == 12) {
	    return 31;
	} else if(month == 2 && (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))) {
	    return 29;
	} else if(month == 2) {
	    return 28;
	} else {
	    return 30;
	}
}

/**
 * get the same date in last month
 * if last month does not contain the day the last day will return
 * @param thedate
 * @param n if n == 6, MM-dd will return
 * @return 
 */
function baseGetLastMonthTheSameDay(thedate, n) {
	var year = thedate.substring(0,4);
	var month = thedate.substring(5,7);
	var date = thedate.substring(8);
    
	var monthDays = baseGetDatesInMonth(year, month);

	var lastMonthYear = year;
	var lastMonth = month - 1;
	if(lastMonth == 0) {
	    lastMonthYear = year - 1;
		lastMonth = 12;
	}
	
	var lastMonthDays = baseGetDatesInMonth(lastMonthYear, lastMonth);

	var lastMonthDate = date;
	if(lastMonthDays < date) {
	    lastMonthDate = lastMonthDays;
	}
	if(lastMonth < 10) {
	    lastMonth = "0" + lastMonth;
	}
	/*
	if(lastMonthDate < 10) {
	    lastMonthDate = "0" + lastMonthDate;
	}
	*/
	
    
	if(n == 5) {
	    return lastMonth + "-" + lastMonthDate;
	}
    return  lastMonthYear + "-" + lastMonth + "-" + lastMonthDate;
}

/**
 * get the same date in last week
 * @param thedate
 * @param n if n == 6 MM-dd will return
 * @return
 */
function baseGetLastWeekTheSameDay(thedate, n) {
    var year = thedate.substring(0,4);
	var month = thedate.substring(5,7);
	var date = thedate.substring(8);

	var theDate = new Date();
    theDate.setYear(year);
	theDate.setMonth(month -1);
	theDate.setDate(date);

	var time = theDate.getTime();
	time = time - 7 * 24 * 60 * 60 * 1000
	theDate.setTime(time);
	
	var lastWeekYear = theDate.getYear();
	var lastWeekMonth = theDate.getMonth() + 1;
	var lastWeekDate = theDate.getDate();

    
	if(lastWeekYear < 1900) {
	    lastWeekYear = lastWeekYear + 1900;
    }
	if(lastWeekMonth < 10) {
	    lastWeekMonth = "0" + lastWeekMonth;
	}
	if(lastWeekDate < 10) {
	    lastWeekDate = "0" + lastWeekDate;
	}
	

    if(n == 5) {
	    return lastWeekMonth + "-" + lastWeekDate;
	}
    return lastWeekYear + "-" + lastWeekMonth + "-" + lastWeekDate;
}

 

5.js格式化函数,是完全在客户端获取Date对象后的格式化

Date.prototype.format = function(format) {
    var o =
    {
        "M+" : this.getMonth()+1, //month
        "d+" : this.getDate(),    //day
        "h+" : this.getHours(),   //hour
        "m+" : this.getMinutes(), //minute
        "s+" : this.getSeconds(), //second
        "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
        "S" : this.getMilliseconds() //millisecond
    }
    if(/(y+)/.test(format))
    format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)
    if(new RegExp("("+ k +")").test(format))
    format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
    return format;
}

var ddd = new Date();
document.write (ddd.format('yyyy-MM-dd hh:mm:ss<br>'));
document.write (ddd.format('yyyy-MM-dd'));

 

6.

 

分享到:
评论

相关推荐

    【H5JS】游戏常用算法-路径搜索算法-随机迷宫算法(普里姆算法).pdf

    "H5JS游戏常用算法-路径搜索算法-随机迷宫算法(普里姆算法)" 本资源主要介绍了游戏开发中常用的路径搜索算法和随机迷宫算法,着重于普里姆算法的应用。路径搜索算法是游戏开发中非常重要的一部分,特别是在RPG、...

    基于javascript实现的一些常用算法

    这个名为"基于javascript实现的一些常用算法"的资源集合,很可能包含了一系列用JavaScript编写的经典算法实现,这对于学习和理解算法有着极大的帮助。让我们深入探讨一下这些算法及其在JavaScript中的实现。 1. **...

    Node.js-Nodorithm-提供一些常用算法封装的NPM包

    Node.js是一个基于Chrome V8引擎的...Nodorithm作为一个集合了多种常用算法的Node.js库,对于提升开发效率和代码质量有着显著的作用。无论是初学者还是经验丰富的开发者,都可以从中受益,更好地应对各种算法挑战。

    JS常用算法实现代码

    以上是JS常用算法实现代码的具体分析,涉及到了数组去重、快速排序、统计字符串中字符出现次数、变量值交换、求最大差值五个常用的算法实现。这些算法是程序员基本功的一部分,在处理实际问题时经常能够用到。通过对...

    JSHTML5游戏常用算法之路径搜索算法随机迷宫算法详解【普里姆算法】随机搜索算法.pdf

    "JSHTML5游戏常用算法之路径搜索算法随机迷宫算法详解【普里姆算法】随机搜索算法" 路径搜索算法是游戏开发中非常重要的一个算法,特别是在 RPG、SLG 中经常用到。在这些游戏中,通过路径指定目的地,人物或者 NPC ...

    JavaScript常用数组算法小结|javascript-215980.pdf

    今天抽点时间把javascript中的一些常用的数组算法做一下总结,以方便大家面试笔试或者日常开发过程中用到。其中部分算法来自网络,这里做了下汇总整理。文章末尾我会把参考的来源附上去,如果直接看算法比较枯燥的...

    ES6的JavaScript算法思想实现之分而治之,动态规划,贪心算法和回溯算法 贪心算法和动态规划.pdf

    分而治之算法是一种常用的算法思想,它将原问题分解为多个小问题,解决小问题,然后将小问题的解决方案组合起来,得到原问题的解。这种算法思想在解决复杂问题时非常实用。在JavaScript中,分而治之算法可以使用递归...

    JavaScript参考手册(含jsva常用算法).zip

    JavaScript参考手册和Java常用算法手册是两个非常重要的资源,对于学习和掌握这两种编程语言的开发者来说,它们提供了深入的理解和实践指导。 JavaScript,通常简称为JS,是一种轻量级的解释型编程语言,广泛用于...

    leetcode和oj-algorithm:Javascript常用算法练习,对想找Javascript相关工作的人有帮助

    所以我用Javascript写了一些基本的算法,也希望其他人可以贡献一份力量,为我们这些热爱Javascript的人制作一个Javascript算法库! 力码 LeetCode 是准备技术面试的好地方,但 LeetCode 的在线评审只支持 C++、Java ...

    一些常用算法的JavaScript实践_JavaScript_下载.zip

    这个压缩包“一些常用算法的JavaScript实践”提供了JavaScript实现常见算法的实例,可以帮助开发者提升技能,理解并应用这些算法到实际项目中。 在JavaScript-Utilities-master文件夹中,我们可以期待找到一系列与...

    JavaScript遗传算法之迷宫寻路

    JavaScript遗传算法之迷宫寻路是一种利用人工智能技术解决复杂问题的方法。遗传算法是模拟生物进化过程的一种优化技术,常用于解决最优化问题,如路径规划、组合优化等。在这个例子中,我们用JavaScript来实现这一...

    蚂蚁群算法的JS实现_JavaScript_蚁群算法_负载均衡调度

    集群模式是目前较为常用的一种部署结构,也就是当单机处理能力无法满足业务需求,那么就增加处理节点,并由一个负载均衡器负责请求的调度。然而对于一个庞大系统而言,情况往往比较复杂。集群中节点的处理能力往往各...

    通过实例解析JavaScript常用排序算法

    JavaScript中的排序算法是编程基础知识的重要组成部分,特别是在处理数据和优化性能时显得尤为关键。本文将深入探讨四种常见的排序算法:冒泡排序、快速排序、选择排序以及插入排序,并通过实例代码进行详细解析。 ...

    javascript-algorithms:JavaScript常用算法

    使用JavaScript在45行中实现... 数组大小= 10000000 用本机排序获取了“ 3706ms” 自定义排序获取“ 1071ms” test3:等于= true 如何使用git clone cd javascript-算法节点--max-old-space-size = 8192 qsort_test.js

    javascript算法训练营

    JavaScript算法训练营是一个专注于提升JavaScript开发者算法能力的学习资源。在这个训练营中,参与者将深入学习和实践各种算法,从而提高编程技巧,理解数据结构,并掌握解决复杂问题的方法。JavaScript作为前端开发...

    用Js编写的直线裁剪算法和区域填充算法

    总结,"用Js编写的直线裁剪算法和区域填充算法"是一个将计算机图形学理论与实际编程语言相结合的实践项目,通过JavaScript实现,可以在Web环境中直观地展示和操作这些图形处理算法。这不仅有助于理解和掌握这些算法...

    js算法实现

    JavaScript(简称JS)是一种广泛应用于Web开发的轻量级编程语言,它在处理算法和数据结构方面具有强大的能力。在给定的压缩包文件中,我们涵盖了几个关键的算法实现,包括最短路径问题、排序算法、MD5加密以及DES...

    公历转换农历的算法(JavaScript)

    5. JavaScript 实现:JavaScript 是一种常用的编程语言,可以用来实现公历转换农历的算法。 6. ASP.NET 实现:ASP.NET 是一种常用的 Web 应用程序开发平台,可以用来实现公历转换农历的算法。 结论:公历转换农历的...

Global site tag (gtag.js) - Google Analytics