js linq库

摘要:
http://jsl.solomon-yu.cn/JSE/jsExtension实现类型C#Linq函数更新日志查看更新日志文件jsExtension.jsjsExtension.min.jsjsExtensionTest。js全局通用常量和函数(由所有线程共享)函数备注示例$$。枚举。roundTyperound函数输入舍入规则舍入:舍入下限:向下

http://jsl.solomon-yu.cn/JSE/

jsExtension实现类型C#的Linq功能

更新日志查看更新日志
文件jsExtension.js jsExtension.min.js jsExtensionTest.js
全局公用常量及函数(所有线程共用)
函数备注使用示例
$$.enumeration.roundTyperound函数进入舍入的规则rounding:四舍五入
floor:向下取整
ceiling:上向取整
$$.enumeration.orderDirection排序方向asc:正序
desc:反序
$$.CONST.minIntint最小值-2147483648
$$.CONST.maxIntint最大值2147483647
$$.CONST.minDate最小日期1900-01-01 00:00:00
$$.CONST.maxDate最大日期2100-12-31 23:59:59
$$(JS扩展总入口)
函数备注使用示例
createJSE()创建一个JS扩展,如果在多线程中使用JS扩展不能直接使用$$,需要在每一个线程中创建扩展函数的一个实例var jse = $$.createJSE();
oe(data)创建一个objectExtension扩展实例var oaTest = $$.oe(data);
soe(data)从object扩展池中获取一个object扩展,如果object扩展池中没有实例,则创建一个,并将新创建的实例加入池中var oaTest = $$.soe(data);
ae(data)创建一个arrayExtension数组扩展实例var aeTest = $$.ae([]);
sae(data)从数组扩展池中获取一个数组扩展实例,如果数组扩展池中没有实例,则创建一个,并将新创建的实例加入池中var aeTest = $$.sae([]);
oa(data)创建一个orderedArray实例var oaTest = $$.oa([]);
soa(data)从orderedArray池中获取一个orderedArray实例,如果池中没有实例,则创建一个,并将新创建的实例加入池中var oaTest = $$.soa([]);
sb(data)创建一个stringBuilder扩展实例var sbTest = $$.sb("");
ssb(data)从stringBuilder池中获取一个stringBuilder,如果stringBuilder池中没有实例,则创建一个,并将新创建的实例加入池中var sbTest = $$.ssb(data);
de(data)创建一个dateExtension日期扩展实例var de = $$.de(data);
sde(data)从日期扩展池中获取一个日期扩展,如果日期扩展池中没有实例,则创建一个,并将新创建的实例加入池中var de = $$.sde(data);
ocf(func, interval)onceCallFunction在一定时间内只触发一次调用var ocf = $$.ocf({ func: function () { console.log(1); }, 500);
var ocf = $$.ocf(function () { console.log(1); }, interval: 500, invokeTime: "timeout" });//指定为timeout时调用call不会触发,会在interval毫秒后执行,不指定该参数为atonce
ocf.call();//500毫秒内不论触发多少次都只会执行一次
dictionary(data)创建一个键值对实例var dictionary = $$.dictionary(data);
compare(a, b, ignoreCase)比较两个值的大小,如果a > b返回值大于0,如果a == b返回值等于0,如果a < b返回值小于0;注:如果a、b都为数字则按值比较,反之按字符串比较$$.compare(1, 2):-1
$$.compare('abc', 'ABC', true):0
isNullOrUndefined(checkData)是否为null或undefinded$$.isNullOrUndefined("1231"):false
isNullOrEmpty(checkData)是否为null或空$$.isNullOrEmpty(""):true
isNullOrWhiteSpace(checkData)是否为null或空白字符串$$.isNullOrEmpty(" "):true
isObject(checkData)对象是否是object类型$$.isObject({}):true
isString(checkData)对象是否是string类型$$.isObject(""):true
deepCopy(source, ignoreKeyList)深度拷贝,ignoreKeyList为需要忽略的属性var obj = $$.deepCopy({ a: 1, b: [1, 2] });
extend()扩展对象,拷贝于jQueryvar obj = $$.extend({}, { a: 1 });
getRandomString(length)生成随机字符串var str = $$.getRandomString(10);
getHost()取得当前页面路径的HOST 
getAbsolutePath(url)取得当前页面的绝对路径,如果传入了url参数则从该参数中获取 
getUrl()取得当前页面的全路径 
getRawUrl()取得当前页面的原始路径 
getUrlParam(name, search)从当前页面的QueryString或search中取得名为name的参数值 
getUrlParams(search)从当前页面或search取得参数列表,返回{ name: '', value: '' }数组 
htmlEncode(data)对数据进行HTML编码 
htmlDecode(data)对数据进行HTML解码 
urlEncode(data)对数据进行URL编码 
urlDecode(data)对数据进行URL解码 
format(format, params)将指定字符串中的一个或多个格式项替换为指定对象的字符串表示形式$$.format("{0}{1}", "a", "b"):ab
isInt(checkData)是否是int值$$.isInt("1234"):true
$$.isInt("-1234"):true
$$.isInt("a1234"):false
isNum(checkData)是否是纯数字$$.isNum("1234"):true
$$.isNum("-1234"):false
isFloat(checkData)是否是浮点数$$.isFloat("1234"):true
$$.isFloat("1234.12"):true
$$.isFloat("a1234"):false
isBool(checkData)是否是bool类型$$.isBool(true):true
$$.isBool(false):true
$$.isBool("true"):false
isEnumerable(checkData)是否可以枚举 
isArray(checkData)是否是数组 
isDate(checkData)是否是日期 
isDateTime(checkData)是否是包含时间的日期 
getDateTimeMonthDayCount(date)取得日期当月天数$$.getDateTimeMonthDayCount("2016-02-20"):29
formatDateTime(date, format)格式化日期$$.formatDateTime("2018-09-12 09:26:35", "yyyy-MM-dd HH:mm:ss"):2018-09-12 09:26:35
$$.formatDateTime("2018-09-12 09:26:35", "yy-M-d H:m:s"):18-9-12 9:26:35
isFunction(checkData)是否是函数 
isTel(checkData)是否是电话 
isMobile(checkData)是否是手机号 
isEmail(checkData)是否是邮件 
isIdCard(checkData)是否是身份证 
isNumAndEnglishCharactor(checkData)是否仅包含数字和英文字母 
getFileExtension(fileName)取得文件的类型$$.getFileExtension("abc.xlsx"):.xlsx
random(min, max)取得min到max之前的随机数 
cookie(key, value, options)设置或取得cookie值$$.cookie("redirect_url_after_pay", parent.location.href, { path: "/" });
session(key, value)设置或取得session值,关闭浏览器失效 
storage(key, value)设置或取得storage值,不清除缓存一直有效 
md5(str)md5加密$$.md5("123456"):e10adc3949ba59abbe56e057f20f883e
generateId()生成一个GUID格式的字符串 
objectExtension(object扩展)
函数备注使用示例
setData(data)设置数据$$.soe(data).setData(data);
equals(comareObj, func)比较对象是否相等,func用于构造比较字段,如果未传入func参数则直接比较两个对象$$.soe({a: 1, b: 2}).equals({a: 2, b: 2}, function (x) { return x.a; }):false
$$.soe({a: 1, b: 2}).equals({a: 2, b: 2}, x => x.b):true
toString(defaultValue, maxLength, appendStr)将对象转换为字符串,如果对象为空或undefinded则返回defaultValue,如果字符串长度超过maxLength则截断,并以appendStr结尾$$.soe("abcdefgehi").toString("", 5, "..."):abcde...
contains(checkValue, ignoreCase)字符串是否包含某字符串$$.soe("abce").contains("abc"):true
toInt(defaultValue)转换为int值$$.soe("123").toInt(0):123
toFloat(defaultValue)转换为float值$$.soe("123.23").toFloat(0):123.23
round(decimals, roundType)按给定的小数位四舍五入$$.soe(123.23535).round(2):123.24
$$.soe(123.23535).round(2, $$.enumeration.roundType.floor):123.23
toBool(defaultValue)转换为bool值,如果是值类型,大于0返回true,其余返回false;如果是其它类型,先转换为字符串,如果$$.compare("true", true) == 0返回true,其它返回false$$.soe(1).toBool():true
$$.soe("tRuE").toBool():true
toDateTime(defaultValue)转换为时间对象$$.soe("2018-09-15 17:42:00").toDateTime();
replaceAll(oldStr, newStr)替换所有字符串$$.soe("abceefgabcd").replaceAll("abc", "111"):111eefg111d
startWith(checkData)字符串是否以某字符串开头$$.soe("abcde").startWith("abc"):true
trimLeft()移除开始字符串,可以接收无数个参数$$.soe("abcde").trimLeft("a", "b"):cde
endWith(checkData)字符串是否以某字符串结尾$$.soe("abcde").endWith("abc"):false
trimRight()移除结尾字符串,可以接收无数个参数$$.soe("abcde").trimRight("d", "e"):abc
test(regular)是否满足正则表达式$$.soe("13435").test(/^d+$/):true
toArray()转换为数组$$.soe("133").toArray():['1', '2', '3']
arrayExtension(数组扩展)
函数备注使用示例
isDataValid()数据是否是合法的数组$$.sae([]).isDataValid();
setData(data)设置数据$$.sae(['a', 'b', 'c']).setData([1, 2, 3]);
hasItem(func)是否包含某元素$$.sae(['a', 'b', 'c']).hasItem('a'):true
$$.sae([{ a: 1}, { a: 2 }]).hasItem(x => x.a == 1):true
all(func)确定序列中的所有元素是否满足条件$$.sae([1, 2, 3]).all(x => x > 0):true
any(func)确定序列中是否存在满足条件的元素$$.sae([1, 2, 3]).any(x => x > 0):true
contains(checkData)确定序列中是否包含某元素$$.sae([1, 2, 3]).contains(1):true
findAll(func)查找所有符合条件的元素$$.sae([1, 2, 3]).findAll(x => x > 1).toArray():[2, 3]
select(func)将序列中的每个元素投影到新表中$$.sae([{ a:1, b: 2}, { a: 2, b:3 }]).select(x => x.a).toArray():[1, 2]
add(data)在尾部添加元素$$.sae([1, 2]).add(3).toArray():[1, 2, 3]
remove(func)删除符合条件的元素$$.sae([1, 2, 3]).remove(x => x > 2).toArray():[1, 2]
removeAt(index)删除某位置的元素$$.sae([1, 2, 3]).removeAt(2).toArray():[1, 2]
skip(count)跳过前count个元素$$.sae([1, 2, 3]).skip(1).toArray():[2, 3]
skipWhile(func)跳过前面所有符合要求的元素,直到第一个不符合的元素为止$$.sae([1, 2, 3]).skipWhile(x => x < 2).toArray():[2, 3]
take(count)截取前count个元素$$.sae([1, 2, 3]).take(2).toArray():[1, 2]
takeWhile(func)截取前面所有符合要求的元素,直到第一个不符合的元素为止$$.sae([1, 2, 3]).takeWhile(x => x < 3).toArray():[1, 2]
toPaginated(pageIndex, pageSize)分页取得数据$$.sae([1, 2, 3, 4]).toPaginated(2, 2).toArray():[3, 4]
distinct()去重$$.sae([1, 1, 2, 2]).distinct().toArray():[1, 2]
distinctBy(func)按条件去重$$.sae([{ a: 1, b: 2}, { a: 1, b: 3}]).distinctBy(x => x.a).toArray():[{ a: 1, b: 2 }]
hasRepeatItem()是否有重复元素$$.sae([1, 2]).hasRepeatItem():false
hasRepeatItemBy(func)按条件判断是否存在重复元素$$.sae([{ a: 1, b: 2}, { a: 1, b: 3}]).hasRepeatItemBy(x => x.a):true
findIndex(func)查找第一个符合条件元素的位置$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).findIndex(x => x.a == 2):1
findLastIndex(func)查找最后一个符合条件元素的位置$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).findLastIndex(x => x.a == 2):1
firstOrDefault(func)查找第一个符合条件的元素,如果没有找到返回null$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).firstOrDefault(x => x.a == 2):{ a: 2, b: 4 }
lastOrDefault(func)查找最后一个符合条件的元素,如果没有找到返回null$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).lastOrDefault(x => x.a == 2):{ a: 2, b: 4 }
orderBy(func)按条件排序,返回orderedArray对象$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).orderBy(x => x.b);
orderByDescending(func)按条件排倒序,返回orderedArray对象$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).orderByDescending(x => x.b);
count(func)按条件计数$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).count(x => x.b > 2):1
max(func)按条件取得最大值$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).max(x => x.b):4
min(func)按条件取得最小值$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).min(x => x.b):2
sum(func)按条件加总$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).sum(x => x.b):6
average(func)按条件求平均值$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).average(x => x.b):3
intersect(intersectArray, func)按条件去数组中的元素$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).intersect([{ a: 1, b: 2 }], x => x.a).toArray():[{ a: 2, b: 4}]
concat(concatArray)组合两个数组$$.sae([{ a: 1, b: 2}]).concat([{ a: 2, b: 4}], x => x.a).toArray():[{ a: 1, b: 2}, { a: 2, b: 4}]
union(unionArrary)组合两个数组并去除重复元素$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).union([{ a: 2, b: 4}], x => x.a).toArray():[{ a: 1, b: 2}, { a: 2, b: 4}]
groupBy(func)按条件分组$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).groupBy(x => x.a).toArray():[{ key: 1, data: [{ a: 1, b: 2}] }, {key: 2, data: [{ a: 2, b: 4}]]
setAll(func)遍历每个元素并在元素上执行函数$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).setAll(x => x.a = 1).toArray():[{ a: 1, b: 2}, { a: 1, b: 4}]
forEach(func)与setAll功能相同$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).forEach(x => x.a = 1).toArray():[{ a: 1, b: 2}, { a: 1, b: 4}]
forEachAsync(func, $)为每一个元素创建一个线程并在元素上执行函数,需要使用jQuery库查看示例
batchProcessing(countPerEach, func)分批次执行函数$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).batchProcessing(1, x => x.a = 1)
push(data)在数组尾部添加元素$$.sae([1, 2, 3]).push(4):[1, 2, 3, 4]
insert(index, data)在指定位置插入元素$$.sae([1, 2, 3]).insert(1, 4):[1, 4, 2, 3]
toArray()将数据转换成数组$$.sae([{ a: 1, b: 2}, { a: 2, b: 4}]).toArray():[{ a: 1, b: 2}, { a: 2, b: 4}]
dictionary(键(name)值(value)对)
函数备注使用示例
setData(data)设置数据 
getData()取得数据 
toArray()转化为数组 
add(name, value)添加元素$$.dictionary().add("name", "value");$$.dictionary().add({ name: "name", value: "value" });
set(name, value)设置值 
get(name)取得值 
remove(name)删除元素 
count()取得字典数据量 
containsName(name)是否包含某name 
containsValue(value)是否包含某value 
orderedArray(数组排序扩展)
函数备注使用示例
setData(data)设置数据$$.soa([{ a: 1, b: 2}, { a: 2, b: 4}]).setData([]);
thenBy(func)按条件排正序$$.soa([{ a: 1, b: 2}, { a: 2, b: 4}]).thenBy(x => x.a).toArray():[{ a: 1, b: 2}, { a: 2, b: 4}]
thenByDescending(func)按条件排倒序$$.soa([{ a: 1, b: 2}, { a: 2, b: 4}]).thenByDescending(x => x.a).toArray():[{ a: 2, b: 4}, { a: 1, b: 2}]
注:可以连续使用thenBy、thenByDescending如$$.soe([]).thenBy(x => x.a).thenByDescending(x => x.b).toArray();
toArray()将数据转换成数组 
stringBuilder(字符串构造器)
函数备注使用示例
setData(data)设置数据$$.ssb("").setData("133");
insert(index, str)在指定位置插入字符串$$.ssb("123").insert(1, "a").toString():1a23
append(str)在尾部附加字符串$$.ssb("123").append("a").toString():123a
appendFormat(format, params)将通过处理复合格式字符串(包含零个或零个以上格式项)返回的字符串追加到此实例。每个格式项都替换为一个参数的字符串表示形式。$$.ssb("123").appendFormat("{0}a{0}{1}", "x", "y").toString():123xaxy
appendLine(str, lineCode)在尾部附加字符串,并添加一个换行符 
appendLineForHtml(str)在尾部附加字符串,并添加一个HTML换行符(<br />) 
length()字符串长度$$.ssb("1231").length():4
replaceAll(oldStr, newStr)替换字符串$$.ssb("1231").replaceAll("1", "a").toString():a23a
startWith(checkData)字符串是否以某字符串开头$$.ssb("1231").startWith("1"):true
trimLeft(trimData)移除开始字符串$$.ssb("1231").trimLeft("1").toString():231
endWith(checkData)字符串是否以某字符串结尾$$.ssb("1231").endWith("1"):true
trimRight(trimData)移除结尾字符串$$.ssb("1231").trimRight("1").toString():123
toString()转换为字符串$$.ssb("1231").toString():1231

dateExtension(日期扩展)
函数备注使用示例
setData(data)设置数据,并将数据转换为日期$$.sde(new Date()).setData("2018-09-12 13:53:00");
addDays(days)添加天数$$.sde("2018-09-12 13:53:00").addDays(1).toString():2018-09-13 13:53:00
addMonths(months)添加月
注:在JS中添加了月数后如果当前日期比该月最大的日期还要大会顺延到下一个月份,如2018-01-30加1个月变成了2018-03-02
$$.sde("2018-09-12 13:53:00").addMonths(1).toString():2018-10-12 13:53:00
addYears(years)添加年
注:在JS中添加了年数后如果当前日期比该月最大的日期还要大会顺延到下一个月份,如2016-02-29加1年变成了2017-03-01
$$.sde("2018-09-12 13:53:00").addYears(1).toString():2019-09-12 13:53:00
toDayBeginTime()转换成一在当中开始的时间$$.sde("2018-09-12 13:53:00").toDayBeginTime().toString():2018-09-12 00:00:00
toDayEndTime()转换成一在当中结束的时间$$.sde("2018-09-12 13:53:00").toDayEndTime().toString():2018-09-12 23:59:59
toWeekBeginTime()转换成本周开始的时间$$.sde("2018-09-12 13:53:00").toWeekBeginTime().toString():2018-09-10 00:00:00
toWeekEndTime()转换成本周结束的时间$$.sde("2018-09-12 13:53:00").toWeekEndTime().toString():2018-09-16 23:59:59
toMonthBeginTime()转换成本月开始的时间$$.sde("2018-09-12 13:53:00").toMonthBeginTime().toString():2018-09-01 00:00:00
toMonthEndTime()转换成本月结束的时间$$.sde("2018-09-12 13:53:00").toMonthEndTime().toString():2018-09-30 23:59:59
toYearBeginTime()转换成本年开始的时间$$.sde("2018-09-12 13:53:00").toYearBeginTime().toString():2018-01-01 00:00:00
toYearEndTime()转换成本年结束的时间$$.sde("2018-09-12 13:53:00").toYearEndTime().toString():2018-12-31 23:59:59
getDate()取得日期对象 
toString(format)格式化日期返回字符串$$.sde("2018-09-12 13:53:00").toString():2018-09-12 13:53:00
$$.sde("2018-09-12 13:53:00").toString("yy-MM-dd HH:mm:ss"):18-09-12 13:53:00
$$.sde("2018-09-12 13:53:00").toString("yy-m-d H:m:s"):18-9-12 23:59:0

免责声明:文章转载自《js linq库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇批处理 —— 每天生成一个以日期命名的文件(Win XP)Python 3: 加密简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

原生js实现ajax 发送post请求/原生JS封装Ajax插件(同域、jsonp跨域)

原生js实现ajax发送post请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 varpostData = { "name1": "value1", "name2": "value2"}; postData = (functio...

js forEach参数详解,forEach与for循环区别,forEach中如何删除数组元素

 壹 ❀ 引 在JS开发工作中,遍历数组的操作可谓十分常见了,那么像for循环,forEach此类方法自然也不会陌生,我个人也觉得forEach不值得写一篇博客记录,直到我遇到了一个有趣的问题,我们来看一段代码: let arr = [1, 2]; arr.forEach((item, index) => { arr.splice(inde...

js实现全选和取消全选

HTMl      <input type="checkbox" name="allCheckBox" />      <br/>       <input type="checkbox" name="checkbox" />        <input type="checkbox" name="checkb...

gulp插件的使用方法

gulp插件很多,这里介绍几个比较常用的插件。。。 1.gulp-less:用于把less文件编译成css文件。      因为html文件中不能直接引用less文件(需要导入相关编译js文件配合才行),因此需要想方设法把相应less文件编译成less文件编译成css文件。除了考拉编译外,还可以通过gulp这个自动化构建工具实现less文件的编译。   在...

js之split()和join()的用法

说明 这几天写了一个简单的vue项目,需要截取字符串,一时间想到了正则表达式,还折腾了还一会儿,最后上网查了一下,使用split()再简单不过了,也顺便回忆一下join()。可见我有多菜,哈哈,学了这么久,竟然对它们这么陌生。 split(separator,howmany) 说明:可以把某个字符串str按某个字符(separator)分割成多个字符串...

linq的decimal类型保存到数据库只保存到小数点后两位的问题

今天的一个decimal类型保存到数据的问题困扰了我很长时间,最后就是一个小小的设置问题解决······坑······深坑···· 话不多说,直接说问题,在说答案: 问题:linq当采用EF的DbContext保存decimal类型数据到数据库,默认只会保存小数点后的前2位小数,其余均置0;         例如保存1.23456789,实际存到数据库里的...