数组插件----linq.js
优点
1、支持jQuery插件的方式。jquery.linq.min.js。
2、也可以像普通js方法一样使用。linq.min.js。
3、当然用习惯VS的童鞋肯定希望有个良好的智能感知,是的,它支持。
4、和C# Linq有很相似的地方,这个就会让你上手起来更快,更让我欢喜的是在linq.js的一些方法中,你可以像写Lambda表达式一样去写过滤条件,而且在过滤字符串中支持$符号【下面上图】。
Linq.js结构图

体验一:查询json对象
|
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
|
function TestQueryObjects() { var jsonArray = [ { "StuID": 1, "StuName": "James", "Age": 30, "Country": "USA" }, { "StuID": 2, "StuName": "Byant", "Age": 36, "Country": "USA" }, { "StuID": 3, "StuName": "Lin", "Age": 30, "Country": "Taiwan" }, { "StuID": 4, "StuName": "Yao", "Age": 30, "Country": "Shanghai" } ]; var querResult = $.Enumerable.From(jsonArray) .Where(function (x) { return x.Age <= 30; }) .OrderBy(function (x) { return x.StuID; }) .ToArray() .forEach(function (i) { document.write(i.StuID + ";" + i.StuName + ";" + i.Age + ";" + i.Country + "<br/>"); }); document.write("====================================" + "<br/>"); var queryResult2 = $.Enumerable.From(jsonArray) .Where("$.Age<=30") //这个操作很牛气 .OrderBy("$.StuID") .ToArray() .forEach(function (i) { document.write(i.StuID + ";" + i.StuName + ";" + i.Age + ";" + i.Country + "<br/>"); }); } |
上下两个queryResult会得出一样的结果

体验二:Lambda怎么来,Linq.js就怎么来
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function TestWithLinq() { // C# Linq //Enumerable.Range(1, 10) //.Where(delegate(int i) { return i % 3 == 0; }) //.Select(delegate(int i) { return i * 10; }); Enumerable.Range(1, 10) .Where(function (i) { return i % 3 == 0; }) .Select(function (i) { return i * 10; }) .ToArray() .forEach(function (i) { document.write(i + ";"); //30;60;90; });} |
体验三:去重
|
1
2
3
4
5
6
7
8
9
|
function TestDistinct() { var arr = [100, 200, 30, 40, 500,200, 40]; Enumerable.From(arr) .Distinct() .ToArray() .forEach(function(i) { document.write(i + ";"); //100;200;30;40;500; }); } |
体验四:交集、差集、并集
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function TestIntersectExcept() { var arr1 = [1, 412, 53, 25]; var arr2 = [53, 25,22,20]; Enumerable.From(arr1).Intersect(arr2).ForEach(function(i) { document.write(i + ";"); //53,25 }); Enumerable.From(arr1).Except(arr2).ForEach(function (i) { document.write(i + ";"); // 1;412 }); Enumerable.From(arr1).Union(arr2).ForEach(function (i) { document.write(i + ";"); // 1;412;53;25;22;20; }); } |
体验五:Alternate、Contains
|
1
2
3
4
5
6
7
8
|
function TestAlternate() { Enumerable.Range(1, 5).Alternate('*').ForEach(function (i) { document.write(i + ";"); //;*;2;*;3;*;4;*; }); var r = Enumerable.Range(1, 5).Contains(3); document.write(r); //ture } |
体验六:Min、Max
|
1
2
3
4
5
6
|
function TestMaxMin() { var max = Enumerable.Range(1, 5).Max(); //5 var min = Enumerable.Range(1, 5).Min(); //1 document.write(max+";"+min); } |
总结
能用到这些js的地方有些功能在后台也可以实现,但是我个人更喜欢js的方式,所以就用了上面几个方法,另外看看linq.js的源码对一些算法也能加深理。使用情况和爱好根据个人爱好来定,不过当我找到这个框架时着实有些震撼。
github地址:http://linqjs.codeplex.com/
官方给出 的API和Demo也能很简单:http://neue.cc/reference.htm
转载自:http://www.cnblogs.com/sword-successful/archive/2014/11/25/4120946.html
数组插件----linq.js的更多相关文章
- js 对json数据进行检索 插件 linq.js
有时界面需要很多数据.但是多次访问服务器效率很低,所以需要检索json数据,最好是像sql查询语句那种 linq.js 插件 LINQ,语言集成查询(Language Integrated Query ...
- 【JavaScript】又一神器框架:linq.js
引言 前几天针对一个js数组交集的问题请教了下同事,他第一反应就是循环,这也是常规思路,因为我个人更倾向于js些,我便开玩笑,不知道js能不能像linq那样实现这些操作呢?果断百度了一把,果然有现成框 ...
- 移动端下拉刷新、加载更多插件dropload.js(基于jQuery/Zepto)
移动端下拉刷新.加载更多插件dropload.js(基于jQuery/Zepto) 原文:http://www.grycheng.com/?p=1869 废话不多说,先让大家看一下案例效果: DEMO ...
- 查询Array中确定数值的对象&JS linq使用 = linq.js
var x=new Array(); x.push({"a":3,"b":3},{"a":2,"b":2},{" ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- js-验证码插件gVerify.js
插件 gVerify.js 源码 !(function(window, document) { function GVerify(options) { //创建一个图形验证码对象,接收options对 ...
- 图片预加载插件 preLoad.js
1.preLoad.js插件 /*! * preLoad.js v1.0 * (c) 2017 Meng Fangui * Released under the MIT License. */ (fu ...
- jQuery全屏滚动插件fullPage.js中文帮助文档API
jQuery全屏滚动插件fullPage.js中文帮助文档API 发现了一个fullPage.js插件,于是百度了一下,还就是这个插件的作用,其实有很多网站都做了全屏滚动的特效,效果也很好看,今天 ...
- 前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密
一.Vue-router(路由) 1.1路由创建 官网:https://router.vuejs.org/zh/ 用 Vue.js + Vue Router 创建单页应用,是非常简单的.使用 Vue. ...
随机推荐
- scala编程第17章学习笔记(2)——集和映射
默认情况下在使用“Set”或“Map”的时候,获得的都是不可变对象.如果需要的是可变版本,需要先写明引用. 如果同一个源文件中既要用到可变版本,也要用到不可变版本的集合或映射,方法之一是引用包含了可变 ...
- [Python爬虫]煎蛋网OOXX妹子图爬虫(1)——解密图片地址
之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...
- Geolocation地理定位
地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...
- Android 当修改一些代码时,使用什么编译命令可以最有效率
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- CentOS 7 中 hostnamectl 的使用
hostnamectl 是在 centos7 中新增加的命令,它是用来修改主机名称的,centos7 修改主机名称会比以往容易许多. 用法 # hostnamectl -h -h --help 显示帮 ...
- [Algorithm] Meeting hour optimization (Kanpsack problem) and Dynamic programming
For example we have array of meeting objects: const data = [ { name: }, { name: }, { name: }, { name ...
- nyoj-659-推断三角形(大坑)
推断三角形 时间限制:1000 ms | 内存限制:65535 KB 难度: 描写叙述 小明非常喜欢研究三角形.如今,小明已经知道三角形的三条边.假设三条边能组成三角形,小明就会非常高兴,他就会得 ...
- 在陌生Linux环境查看Tomcat服务的方法
1.查看Tomcat进程 执行命令$ps -ef|grep tomcat 你就能找出tomcat占据的进程号,当然这要求tomcat启动了. # ps -ef | grep tomcatroot ...
- VM虚拟机Failed to initialize remote display subsystem怎么办
1 如图所示,启动虚拟机的时候出现提示Failed to initialize remote display subsystem.怎么办 2 进入DOS窗口,输入net user __vmware_u ...
- cybergarage-upnp
官网: http://www.cybergarage.org/twiki/bin/view/Main/UPnPFramework Open Source Frameworks for UPnP Cyb ...