`
zhyt710
  • 浏览: 206407 次
  • 性别: 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.

 

分享到:
评论

相关推荐

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

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

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

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

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

    为了帮助开发者更好地理解和应用这些算法,本资源提供了一段JavaScript代码示例,该代码使用HTML5的canvas元素来绘制迷宫图形。开发者可以通过这段示例代码学习如何在游戏项目中实现普里姆算法和随机迷宫算法,...

    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