Js基本数据类型常用方法扩展(基本数据处理)

来源:互联网 发布:阿里云免费监控 编辑:程序博客网 时间:2024/06/15 03:27

Js基本数据类型常用方法扩展

  1. JS中substring与substr的区别

之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为这两种方法的使用时一样的。这样就直接按照在C#中使用Substring的方式,直接在js中用了substring,在实际的项目中,有时候能得到正确的结果,但是有时候得到的结果却让人匪夷所思,后来仔细的调试跟踪之后才发现,原来是Js中substring的方法跟C#中的Substring方法不一样。关于C# 中的字符串截取方法已经很简单了,这里就不再叙述了。主要讲一个js中的substring方法,顺便再讲一下substr方法。

Substring:

该方法可以有一个参数也可以有两个参数。

l 一个参数:

示例: var str=“Olive”;

           str.substring(3);    结果:“ve”    说明:当substring只有一个参数时,参数表示从字符串的第几位开始截取,

直截取到字符串结尾。

l 两个参数:

    示例:var str=“Olive”;

1) Str.substring(3,4);

2) Str.substring(3,2);

       结果:1) “v”  2) 0       说明:当substring有两个参数时,第一个参数表示从字符串的第几位开始截取,第二个参数表示截取到字符串的第几位。这点是个C#中字符截取不同的一点,所以才会导致不同的结果。

Substr:

该方法也可以有一个或两个参数。

l 一个参数:

说明:substr一个参数时,作用跟substring方法一个参数时一样。

l 两个参数:

示例:var str=“Olive”;

1) Str.substr(3,2);

2) Str.substr(3,4);

    结果:1) “ve” 2) “ve”    说明:substr有两个参数时,第一个参数表示从字符串的第几位开始截取,第二个参数表示截取多少位字符串。这点跟C#中字符截取相同的,所以在以后的使用中,如果想要避免出现截取的问题最好还是使用substr。
  1. Array的contains方法

Array没有一个contains方法,在现实的应用场景是,有时候我们需要判断某一个值是否

在该数组中,这个时候一个contains方法就显得很有必要,具体实现如下:

//判断数组中是否包含某个元素

Array.prototype.contains = function (obj) {

var i = this.length;while (i--) {    if (this[i] === obj) {        return true;    }}return false;

}
2. String的contains方法

同样的问题也存在于String类型中,在js中同样也没有一个用来判断某一子串是否包

含在母字符串中的方法,具体实现如下:

//字符串中是否包含某字符串

String.prototype.contains = function contains(string, substr, isIgnoreCase) {

if (isIgnoreCase) {    this = this.toLowerCase();    string = string.toLowerCase();    substr = substr.toLowerCase();}var startChar = substr.substring(0, 1);var strLen = substr.length;for (var j = 0; j < string.length - strLen + 1; j++) {    if (string.charAt(j) == startChar)//    {        if (string.substring(j, j + strLen) == substr)//        {            return true;        }    }}return false;

}
3. Date的addDays、addMonths、addYear、Format方法

熟悉C#的朋友,都会很熟悉也很享受关于DateTime的一系列的便利的操作,在js中并

没有像C#中那样便利的有关时间的操作,有时候不免会用到时间的加减等相关的交互,这里专门对Date类型进行了扩展,具体如下:

//添加天

Date.prototype.addDays = function (d) {

this.setDate(this.getDate() + d);

};

//添加周

Date.prototype.addWeeks = function (w) {

this.addDays(w * 7);

};

//添加月

Date.prototype.addMonths = function (m) {

var d = this.getDate();this.setMonth(this.getMonth() + m);if (this.getDate() < d)    this.setDate(0);

};

//添加年

Date.prototype.addYears = function (y) {

var m = this.getMonth();this.setFullYear(this.getFullYear() + y);if (m < this.getMonth()) {    this.setDate(0);}

};

//日期的格式处理

//日期格式化

Date.prototype.Format = function (fmt) { //author: meizz

var o = {    "M+": this.getMonth() + 1,                 //月份       "d+": this.getDate(),                    //日       "h+": this.getHours(),                   //小时       "m+": this.getMinutes(),                 //分       "s+": this.getSeconds(),                 //秒       "q+": Math.floor((this.getMonth() + 3) / 3), //季度    "S": this.getMilliseconds()             //毫秒   };if (/(y+)/.test(fmt))    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));for (var k in o)    if (new RegExp("(" + k + ")").test(fmt))        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));return fmt;

};
4. Math.max.apply(null,array),求数组中的最大值

该方法主要用来求一个数组中的最大值,这种场景在实际的工作中也会经常用遇到。或

许会有朋友问到,为什么不直接调用Math.max()方法?需要注意的是Math.max()方法支持多个参数的传递,但是它不支持直接传递一个数组作为参数,但是所有的函数都有apply(作用域,参数)这样的一个方法,我们通过apply方法,间接的将数组作为参数,并且将数组中的每个值拆开来传递给了max方法,进而达到了求出最大值的需求。

0 0
原创粉丝点击