开始征程

JSFunction是对Javascript常用函数的整理总结,它依赖于jQuery,其中包含了我们经常用到,但是jQuery又没有提供的方法。

下载

源码:http://www.itbbb.com/jsfunction/jsfunction.js

压缩:http://www.itbbb.com/jsfunction/jsfunction.min.js

引用方法

只需要在您的网页中引用jQuery和jsfunction.js即可使用其中所有函数~~!

<script src="http://code.jquery.com/jquery.min.js"></script>
<!--开发版-->
<!--<script src="http://www.itbbb.com/jsfunction/jsfunction.js"></script>-->
<!--推荐:压缩版-->
<script src="http://www.itbbb.com/jsfunction/jsfunction.min.js"></script>

关注更新

可以收藏此页或者关注我的官方微信,来了解更新动态

Cookie

对浏览器Cookie的相关方法

设置cookie

$.cookie.set(name, value[, time, timetype, domain])

参数

name String Cookie的名称
value String Cookie的值
time Float 可选参数,Cookie的过期时间,默认为关闭页面过期,即session
timetype String 可选参数,时间单位:day: 天, hour: 小时, minute: 分, seconds:秒,默认为hour
domain String 可选参数,设置Cookie所在域

1.设置键为itbbb,值为www.itbbb.com的Cookie.

2.设置键为itbbb.com,值为itbbb.com的Cookie,过期时间为1天.

$.cookie.set("itbbb", "www.itbbb.com");
$.cookie.set("itbbb.com", "itbbb.com", "1", "day");

获取cookie

$.cookie.get(name)

参数

name String 要获取的Cookie名称

获取名为itbbb的Cookie.

$.cookie.get("itbbb");

移除cookie

$.cookie.remove(name)

参数

name String 待删除的Cookie名称

删除名为itbbb的Cookie.

$.cookie.remove("itbbb");

LocalData

本地化存储的相关方法,涉及到HTML5相关知识.

localStorage与cookie的区别,cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,至少可以达到2.6M或更大。数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。

set

设置localData

$.localData.set(name, value)

参数

name String localData的名称
value String localData的值

1.设置键为itbbb,值为www.itbbb.com的localData.
2.输入你想存储的值,尝试刷新页面输入值依然存在:

$.localData.set("itbbb", "www.itbbb.com");

get

获取localData

$.localData.get(name)

参数

name String 要获取的localData名称

获取名为itbbb的localData.

$.localData.get("itbbb");

remove

移除localData

$.localData.remove(name)

参数

name String 待删除的localData名称

删除名为itbbb的localData.

$.localData.remove("itbbb");

removeAll

删除所有localData

$.localData.removeAll(name)

删除所有localData.

$.localData.removeAll();

Browser

浏览器版本检测相关方法

browser

返回浏览器对象,包含属性如下表

$.browser

属性

webkit Bool 是否是webkit内核,Chrome,Safari,新版的Opera
msie Bool 是否是IE内核
firefox Bool 是否是firefox内核,Firefox
ie6 Bool 特别加入ie6,用于判断是否是万恶的IE6

1.判断是否为webkit内核.

2.判断是否为msie内核.

3.判断是否为firefox内核.

4.判断是否为万恶的ie6.

$.browser.webkit;
$.browser.msie;
$.browser.firefox;
$.browser.ie6;

version

返回浏览器版本号

$.browser.version

返回浏览器版本号.

$.browser.version;

mobile

返回是否是移动端访问,返回值为true|false

$.browser.mobile

判断是否是手机浏览器,是返回true,否则返回false.

$.browser.mobile;

Date

Date类型相关扩展和方法

以下Date相关add方法均支持连写,如: $.date("2012-1-1").addMinutes(10).addHours(1).addYears(-11);

date

初始化Date对象,返回Date本身

$.date([time])

参数

time String/Timestamp 可选参数,设置特定时间,可以传2014-1-1或2014/1/1或时间戳1514736000000,默认为当前时间

返回时间对象.

$.date();
$.date("2014-1-1");
$.date(1514736000000);

format

格式化Date对象,返回字符串

Date.format(format)

参数

format String 设置时间格式,如"yyyy-MM-dd hh:mm:ss"

格式化时间.

$.date().format("yyyy-MM-dd hh:mm:ss");
$.date("2014-1-1").format("yyyy-MM-dd");

addMseconds

添加/减少N毫秒,返回Date本身

Date.addMseconds(num)

参数

num Int 增/减毫秒,正数为增,负数为减

增加10毫秒.

减少30毫秒.

$.date().addMseconds(10);
$.date().addMseconds(-30);

addSeconds

添加/减少N秒,返回Date本身

Date.addSeconds(num)

参数

num Int 增/减秒,正数为增,负数为减

增加10秒.

减少30秒.

$.date().addSeconds(10);
$.date().addSeconds(-30);

addMinutes

添加/减少N分钟,返回Date本身

Date.addMinutes(num)

参数

num Int 增/减分钟,正数为增,负数为减

增加10分钟.

减少30分钟.

$.date().addMinutes(10);
$.date().addMinutes(-30);

addHours

添加/减少N小时,返回Date本身

Date.addHours(num)

参数

num Int 增/减分钟,正数为增,负数为减

增加10小时.

减少3小时.

$.date().addHours(10);
$.date().addHours(-3);

addDays

添加/减少N天,返回Date本身

Date.addDays(num)

参数

num Int 增/减天,正数为增,负数为减

增加1天.

减少3天.

$.date().addDays(1);
$.date().addDays(-3);

addWeeks

添加/减少N周,返回Date本身

Date.addWeeks(num)

参数

num Int 增/减周,正数为增,负数为减

增加1周.

减少3周.

$.date().addWeeks(1);
$.date().addWeeks(-3);

addMonths

添加/减少N月,返回Date本身

Date.addMonths(num)

参数

num Int 增/减月,正数为增,负数为减

增加1月.

减少3月.

$.date().addMonths(1);
$.date().addMonths(-3);

addYears

添加/减少N年,返回Date本身

Date.addYears(num)

参数

num Int 增/减年,正数为增,负数为减

增加1年.

减少1年.

$.date().addYears(1);
$.date().addYears(-1);

getWeek

返回星期几

Date.getWeek([type])

参数

type String 枚举:周、星期、En、Short,默认为周

获取传入时间是周几.

返回周几.

返回星期几.

返回英文:"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"

返回英文简写:"Sun.", "Mon.", "Tues.", "Wed.", "Thurs.", "Fri.", "Sat."

$.date().getWeek();
$.date().getWeek("星期")
$.date().getWeek("En")
$.date().getWeek("Short");

getAge

返回年龄

$.date(brithday).getAge()

获取2001年1月4日出生人的年龄

$.date("2001-1-4").getAge();

isLeapYear

判断是否是闰年,返回true|false

Date.isLeapYear()

①、普通年能整除4且不能整除100的为闰年。如:2004年就是闰年(返回true),1901年不是闰年(返回false)

②、世纪年能整除400的是闰年。如:2000年是闰年(返回true),1900年不是闰年(返回false)

$.date("2004-1-1").isLeapYear();
$.date("1901-1-1").isLeapYear();
$.date("2000-1-1").isLeapYear();
$.date("1900-1-1").isLeapYear();

daysInMonth

返回该月有多少天

Date.daysInMonth()

获取某月有多少天,返回天数

$.date("2000-1-1").daysInMonth();

diffDate

返回时间差

$.diffDate(startTime, endTime[, diffType])

参数

startTime Date|String 开始时间,如"2011-1-1"或$.date("2011-1-1")
endTime Date|String 结束时间,如"2012-1-1"或$.date("2012-1-1")
diffType String 枚举:day, hour, minute, seconds,默认为day

返回时间差.

返回当前时间与2013-1-1的天数差.

返回2013-1-2与2013-1-3的小时差.

$.diffDate($.date(), $.date("2013-1-1"));
$.diffDate("2013-1-2", "2013-1-3","hour");

countDown

倒计时

$.countDown(options)

options参数

second Int 倒计时的秒数
startTime Date 开始时间,如$.date("2014-6-1 10:00:00"),默认为当前时间
endTime Date 结束时间,如$.date("2014-6-1 10:01:00")
interval Int 执行间隔的周期,单位为秒,默认为1秒
started Function 开始执行时的回调函数
timed Function 每次执行时的回调函数
finished Function 结束时的回调函数

timed回调函数中的times返回值

day Int 倒计时剩余天数
hours Int 倒计时剩余小时数
minutes Int 倒计时剩余分钟数
seconds Int 倒计时剩余秒数

发短信倒计时函数,30秒后可重新发送.

var djs = $("#demo-countDown");
var _fdjs = function () {
    $.countDown({
        second: 30,
        //startTime: $.date("2014-6-1 10:00:00"),
        //endTime: $.date("2014-6-1 10:00:05"),
        started: function () {
            djs.attr("disabled", "disabled");
        },
        timed: function (times) {
            djs.html("重新发送(" + times.seconds + ")");
        },
        finaled: function () {
            djs.html("重新发送").removeAttr("disabled");
        }
    });
};
djs.click(function () {
    _fdjs();
});

String

String类型相关扩展和方法

以下String相关方法均支持连写,如: " abcdefg,higklmn ".replaceAll(" ", "_").left(5).right(3);

replaceAll

根据参数替换所有字符串,返回新字符串

String.replaceAll(old, new)

参数

old String 待替换的原字符串
new String 要替换为的新字符串

替换字符串中所有空格为下划线

__abcdefg,higklmn__

"  abcdefg,higklmn  ".replaceAll(" ", "_");

trim

去除字符串前后空格,返回新字符串

String.trim()

去除字符串两端空格

abcdefg,higklmn

"  abcdefg,higklmn  ".trim();

left

截取左侧字符串,返回新字符串

String.left(num)

参数

num Int 从左开始截取的字符个数

截取左侧5个字符

abcde

"abcdefg,higklmn".left(5);

right

截取右侧字符串,返回新字符串

String.right(num)

参数

num Int 从右开始截取的字符个数

截取右侧5个字符

gklmn

"abcdefg,higklmn".right(5);

toDate

将字符串转换为时间,返回Date类型

String.toDate([format])

参数

format String 可选参数,可以传入时间格式,如"yyyy-MM-dd",默认为标准时间

将字符串转换成时间类型

2011年01月03日

"2011-1-3".toDate("yyyy年MM月dd日");

Array

Array类型相关扩展和方法

以下Array大部分方法均支持连写.forEach、dequeue、isEmpty、contains、indexOf不支持连写,因为它们并不返回数组本身

如: arr.add(item).add(item).addRange(range) .insert(0, { Name: "itbbb.com" });

add

给数组添加一个元素,返回添加后的数组

Array.add(item)

参数

item String|Object 可以传入一个值,如:"ZhangSan",也可以传入一个对象,如:{ Code: "CN", Name: "中国" }

给数组添加ZhangSan和LiSi

给数组添加一个名中国,代码为CN的对象

[].add("ZhangSan").add("LiSi");
[].add({ Code: "CN", Name: "中国" });

addRange

给数组添加一组元素,返回添加后的数组

Array.addRange(items)

参数

items Object 传入一个对象集合,如:["ZhangSan","LiSi"]或[{ Code: "CN", Name: "中国" },{ Code: "EN", Name: "英国" }]

给数组添加ZhangSan和LiSi

给数组添加一个名中国,代码为CN和名为英国,代码为En的对象

[].addRange(["ZhangSan","LiSi"]);
[].addRange([{ Code: "CN", Name: "中国" },{ Code: "EN", Name: "英国" }]);

forEach

Array.forEach(callbackfn[, thisArg])

参数

callbackfn Function(value,index,array) 一个接受最多三个参数的函数, 对于数组中的每个元素,forEach都会调用callbackfn函数一次
thisArg Object 可选,可在callbackfn函数中为其引用this关键字的对象.如果省略thisArg,则undefined将用作this值

回调参数

value String|Object 数组元素的值
index Int 数组元素的数字索引
array Object 包含该元素的数组对象,数组本身

1.循环一个数组

2.循环一个数组,并用this替换传入的obj对象

/***********1************/
function ShowResults(value, index, ar) {
    document.write("value: " + value);
    document.write(" index: " + index);
}

var letters = ['ab', 'cd', 'ef'];

letters.forEach(ShowResults);

// Output:
//  value: ab index: 0 
//  value: cd index: 1 
//  value: ef index: 2 
/***********2************/
var obj = {
    showResults: function(value, index) {
        var squared = this.calcSquare(value);
        document.write("value: " + value);
        document.write(" index: " + index);
        document.write(" squared: " + squared);
    },
    calcSquare: function(x) { return x * x }
};

var numbers = [5, 6];
//调用方法1
numbers.forEach(obj.showResults, obj);
//调用方法2,用this替换obj
numbers.forEach(function(value, index) { this.showResults(value, index) }, obj);

// Output:
//  value: 5 index: 0 squared: 25
//  value: 6 index: 1 squared: 36
//  value: 5 index: 0 squared: 25
//  value: 6 index: 1 squared: 36

clear

清空数组,返回空数组

Array.clear()

清空数组

var arr=["ZhangSan","LiSi"];
arr.clear();

isEmpty

判断数组是否为空,返回true|false

Array.isEmpty()

判断数组是否为空,返回true或false

false

var arr=["ZhangSan","LiSi"];
arr.isEmpty();

contains

判断数组是否包含某个元素,返回true|false

Array.contains(item)

参数

item String|Object 传入一个对象,如:"ZhangSan"或{ Code: "CN", Name: "中国" }

检测数组是否包含ZhangSan

var arr=["ZhangSan","LiSi"];
var item="ZhangSan";
arr.contains(item);

indexOf

返回元素在数组中的索引,从0开始

Array.indexOf(item)

参数

item String|Object 传入一个对象,如:"ZhangSan"或{ Code: "CN", Name: "中国" }

获得元素"ZhangSan"在数组中的位置

0

var arr=["ZhangSan","LiSi"];
var item="ZhangSan";
arr.indexOf(item);

insert

插入一个元素到数组某个位置,返回插入后的数组

Array.insert(index, item)

参数

index Index 要把元素插入到哪个位置,从0开始
item String|Object 传入一个对象,如:"ZhangSan"或{ Code: "CN", Name: "中国" }

插入元素"WangWu"到数组第二个位置

0

var arr=["ZhangSan","LiSi"];
var item="WangWu";
arr.insert(1,item);

dequeue

将数组第一个元素出队,并返回该元素

Array.dequeue()

将数组中第一个元素出队

temp为"ZhangSan"

var arr=["ZhangSan","LiSi"];
var temp=arr.dequeue();

joinKey

将数组对象中的某一个key组成一个新的一维数组

Array.joinKey(key)

参数

key String 传入数组对象中存在的一个键值,如:"id"

组合数组中的id成为新的数组

ids为[1,2,3]

var arr=[{id:1,name:"zhangshan"},{id:2,name:"lisi"},{id:3,name:"wangwu"}];
var ids=arr.joinKey("id");
//结果:[1,2,3]

removeByKey

将数组对象中的某一个key作为删除的主键,删除传入的所有值对应的对象

Array.removeByKey(key,array)

参数

key String 传入数组对象中存在的一个键值,如:"id"
array Array 传入键值所对应的待删除数据,如:[1,3]

删除数组中的id成为1、3的对象

arr=[{id:2,name:"lisi"}]

var arr=[{id:1,name:"zhangshan"},{id:2,name:"lisi"},{id:3,name:"wangwu"}];
var ids=arr.removeByKey("id",[1,3]);
//结果:[{id:2,name:"lisi"}]

remove

删除数组中某个元素,返回删除后的数组

Array.remove(item)

参数

item String|Object 传入一个待删除对象,如:"ZhangSan"或{ Code: "CN", Name: "中国" }

从数组中删除元素"ZhangSan"

var arr=["ZhangSan","LiSi"];
var item="ZhangSan";
arr.remove(item);

removeAt

按索引删除数组中某个元素,返回删除后的数组

Array.removeAt(index)

参数

index Int 待删除元素的索引值,从0开始

删除数组的第二个元素

arr.removeAt(1);

reverse

数组元素顺序反转

Array.reverse()

反转数组所有元素

5,4,3,2,1

var arr=[1,2,3,4,5];
arr.reverse().join(",");

clone

数组深度克隆,修改新数组不会影响原数组

Array.clone()

深度克隆所给出的数组元素

//值类型
var arr = [1,2,3,4,5];
var newarr = arr.clone();
//Object类型
var arr = [{ Age: 12, Name: "ZhangSan" }, { Age: 24, Name: "LiSi" }, { Age: 19, Name: "WangWu" }];
var newarr = arr.clone();
newarr[0].Name="ZhaoLiu";
//结果:arr[0].Name依然为"ZhangSan",只有newarr[0].Name的变为"ZhaoLiu"

                             

skip

跳过序列中指定数量的元素,然后返回剩余的元素,与take配合做分页

Array.skip(count)

参数

count Int 要跳过的元素数量,需为正数

跳过前5个元素

以10个元素做分页,选择第2页

arr.skip(5);
arr.skip(10).take(10);

take

从序列的开头返回指定数量的连续元素,返回新数组,与skip配合做分页

Array.take(count)

参数

count Int 要返回的元素数量,需为正数

返回5个元素

以10个元素做分页,选择第2页

arr.take(5);
arr.skip(10).take(10);

ArrayLinq

Array结构化查询方法

类似Linq的结构化查询方法,支持连写,方法包含一个clause函数作为参数,clause包含item、index两个回调参数.

当查询时函数需返回一个bool值,如:where、first、last、any、all、count函数clause要返回bool值.

当排序、计算时返回要处理的字段,如:orderBy、orderByDescending、max、min、sum函数clause要返回字段.

clause

clause是整个结构化查询的核心,类似于Lambda表达式,只不过把Array.method(item=>item.属性)语法替换为Array.method(function(item){return item.属性})

连写举例:arr.where(function(item){return item.ID>3;}).orderBy(function(item){return item.Age;}).skip(10).take(10);

clause回调函数

每一个clause作为一个条件传入查询语句,不同情况下返回相应的的值.

clause回调函数参数

item Object 当前回调返回的数组第index个元素
index Int 可选参数,当前回调返的数组的索引
//字符串数组查询、排序示例
var arr=["ZhangSan","LiSi"];
var clause1=function(item,index){
    return item=="ZhangSan";//需要返回bool值
}
arr.where(clause1);
var clause2=function(item,index){
    return item;//需要返回字段
}
arr.orderBy(clause2);
//Json数组查询、排序示例
var arr=[{ Code: "CN", Name: "中国" },{ Code: "EN", Name: "英国" }];
var clause1=function(item,index){
    return item.Name=="中国";//需要返回bool值
}
arr.where(clause1);
var clause2=function(item,index){
    return item.Name;//需要返回字段
}
arr.orderBy(clause2);

where

基于clause筛选值序列,返回数组序列中满足条件的元素

Array.where(clause)

查询所有名为"ZhangSan"的元素,并返回新的数组集合

查询所有Name值为"中国"的元素,并返回新的数组集合

//字符串where查询
var arr=["ZhangSan","LiSi"];
arr.where(function(item,index){
    return item=="ZhangSan";//需要返回bool值
});
//Json数组where查询
var arr=[{ Code: "CN", Name: "中国" },{ Code: "EN", Name: "英国" }];
arr.where(function(item,index){
    return item.Name=="中国";//需要返回bool值
});

first

返回序列中的第一个元素

Array.first(clause)

查询第一个名为"ZhangSan"的元素,并返回该元素

查询第一个Name值为"中国"的元素,并返回该元素

//字符串
var arr=["ZhangSan","LiSi"];
//返回ZhangSan
arr.first(function(item,index){
    return item=="ZhangSan";//需要返回bool值
});
//Json
var arr=[{ Code: "CN", Name: "中国" },{ Code: "EN", Name: "英国" }];
//返回{ Code: "CN", Name: "中国"}
arr.first(function(item,index){
    return item.Name=="中国";//需要返回bool值
});

last

返回序列中的最后一个元素

Array.last(clause)

查询最后一个名为"ZhangSan"的元素,并返回该元素

查询最后一个Name值为"中国"的元素,并返回该元素

//字符串
var arr=["ZhangSan","LiSi"];
//返回ZhangSan
arr.last(function(item,index){
    return item=="ZhangSan";//需要返回bool值
});
//Json
var arr=[{ Code: "CN", Name: "中国" },{ Code: "EN", Name: "英国" }];
//返回{ Code: "CN", Name: "中国"}
arr.last(function(item,index){
    return item.Name=="中国";//需要返回bool值
});

any

确定数组中是否某一元素符合条件,返回true|false

Array.any(clause)

确认数组中是否有一个名为"WangWu"的元素

确认数组中是否有Name值为"中国"的元素

//字符串
var arr=["ZhangSan","LiSi"];
//返回false
arr.any(function(item,index){
    return item=="WangWu";
});
//Json
var arr=[{ Code: "CN", Name: "中国" },{ Code: "EN", Name: "英国" }];
//返回true
arr.any(function(item,index){
    return item.Name=="中国";
});

all

确定数组中是否所有元素都符合条件,返回true|false

Array.all(clause)

确认数组中是否所有元素的Age都大于18岁

//Json
var arr=[{ Age: 20, Name: "ZhangSan" },{ Age: 19, Name: "WangWu" }];
//返回true
arr.all(function(item,index){
    return item.Age>18;
});

count

返回序列中的元素数量

Array.count(clause)

返回序列中的元素数量

//Json
var arr=[{ Age: 20, Name: "ZhangSan" },{ Age: 24, Name: "LiSi" },{ Age: 19, Name: "WangWu" }];
//返回3
arr.count();
//返回1
arr.count(function(item,index){
    return item.Age>22;
});

orderBy

根据键按升序对序列的元素排序

Array.orderBy(clause)

根据姓名按升序对数组元素排序,并返回新的数组集合

按照元素的Age值升序排列,并返回新的数组集合

//字符串where查询
var arr=["ZhangSan","LiSi"];
arr.orderBy(function(item,index){
    return item;//返回待排序的字段
});
//Json
var arr=[{ Age: 20, Name: "ZhangSan" },{ Age: 24, Name: "LiSi" },{ Age: 19, Name: "WangWu" }];
arr.orderBy(function(item,index){
    return item.Age;//按照Age从小到大排列
});

orderByDescending

根据键按降序对序列的元素排序

Array.orderByDescending(clause)

根据姓名按降序对数组元素排序,并返回新的数组集合

按照元素的Age值降序排列,并返回新的数组集合

//字符串where查询
var arr=["ZhangSan","LiSi"];
arr.orderByDescending(function(item,index){
    return item;//返回待排序的字段
});
//Json
var arr=[{ Age: 20, Name: "ZhangSan" },{ Age: 24, Name: "LiSi" },{ Age: 19, Name: "WangWu" }];
arr.orderByDescending(function(item,index){
    return item.Age;//按照Age从大到小排列
});

max

返回最大结果值的元素

Array.max(clause)

获取Age值最大的元素

//Json
var arr=[{ Age: 20, Name: "ZhangSan" },{ Age: 24, Name: "LiSi" },{ Age: 19, Name: "WangWu" }];
//得到{ Age: 24, Name: "LiSi" }
arr.max(function(item,index){
    return item.Age;
});

min

返回最小结果值的元素

Array.min(clause)

获取Age值最小的元素

//Json
var arr=[{ Age: 20, Name: "ZhangSan" },{ Age: 24, Name: "LiSi" },{ Age: 19, Name: "WangWu" }];
//得到{ Age: 19, Name: "WangWu" }
arr.min(function(item,index){
    return item.Age;
});

sum

返回字段值之和

Array.sum(clause)

获取Age之和

//Json
var arr=[{ Age: 20, Name: "ZhangSan" },{ Age: 24, Name: "LiSi" },{ Age: 19, Name: "WangWu" }];
//结果63
arr.sum(function(item,index){
    return item.Age;
});

distinct

数组去除重复,返回新数组

Array.distinct([clause])

注:此函数的clause为可选参数,不填即数组本身元素去重,如果传递则按照传值的字段去重

[1, 2, 3, 4, 5, 3, 2]去除重复

["zhangsan","lisi","wangwu","lisi"]去除重复

[{ x: "1", y: "a" } }, { x: "2", y: "b" }, { x: "1", y: "a" }]去除重复,按字段y去重

[{ x: "1", y: { m: 1, n: 2 } }, { x: "2", y: "b" }, { x: "1", y: { m: 1, n: 2 } }]去除重复,按字段x去重

//数值数组去重
var intarr = [1, 2, 3, 4, 5, 3, 2];
intarr.distinct();
//结果:[1,2,3,4,5]

//字符串数组去重
var strarr=["zhangsan","lisi","wangwu","lisi"];
strarr.distinct();
//结果:["zhangsan","lisi","wangwu"]

//Object数组去重
var objarr=[{ x: "1", y: "a" } }, { x: "2", y: "b" }, { x: "1", y: "a" }];
objarr.distinct();
//结果:[{ x: "1", y: "a" } }, { x: "2", y: "b" }]
objarr.distinct(function(item){ return item.y; });
//结果:[{ x: "1", y: "a" } }, { x: "2", y: "b" }]

//Object复合数组去重
var objarr=[{ x: "1", y: { m: 1, n: 2 } }, { x: "2", y: "b" }, { x: "1", y: { m: 1, n: 2 } }];
objarr.distinct();
//结果:[{ x: "1", y: { m: 1, n: 2 } }, { x: "2", y: "b" }];
objarr.distinct(function(item){ return item.x; });//按照字段x是否重复进行筛选
//结果:[{ x: "1", y: { m: 1, n: 2 } }, { x: "2", y: "b" }];

Url

Url操作相关方法

getArgs

获取url参数,并返回一个对象

$.url.getArgs()

获取 http://itbbb.com?a=1&b=2&c=test 的参数

当存在a值为1的时候,执行callback

var args=$.url.getArgs();
/*
args: Object
a: "1",
b: "2",
c: "test"
*/
if(args.a && args.a==1){
    callback();
}

addCss

在head中添加css

$.url.addCss(path)

参数

path String 待加载css文件的路径

加载itbbb.css

$.url.addCss("http://www.itbbb.com/itbbb.css")

addJs

在head中添加js

$.url.addJs(path)

参数

path String 待加载js文件的路径

加载itbbb.js

$.url.addJs("http://www.itbbb.com/itbbb.js")

Next

下一个在哪里,我将陆续完善这个函数库,未来可能还包括Image预加载,jQuery.fn方法扩展等等常用函数

可以收藏此页或者关注下方我的官方微信,来了解更新动态

如果您发现任何问题,请留言给我,以便尽快修复代码.