1、支持jQuery插件的方式。jquery.linq.min.js。

2、也可以像普通js方法一样使用。linq.min.js。

3、当然用习惯VS的童鞋肯定希望有个良好的智能感知,是的,它支持。

4、和C# Linq有很相似的地方,这个就会让你上手起来更快,更让我欢喜的是在linq.js的一些方法中,你可以像写Lambda表达式一样去写过滤条件,而且在过滤字符串中支持$符号【下面上图】。

Linq.js结构图

体验一:查询json对象

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就怎么来

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;
});
}

  

体验三:去重

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;
});
}

  

体验四:交集、差集、并集

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

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

function TestMaxMin() {
var max = Enumerable.Range(1, 5).Max(); //5
var min = Enumerable.Range(1, 5).Min(); //1
document.write(max+";"+min); }

  

备注:

github地址:http://linqjs.codeplex.com/

官方给出 的API和Demo也能很简单:http://neue.cc/reference.htm

又一神器框架:linq.js的更多相关文章

  1. 【JavaScript】又一神器框架:linq.js

    引言 前几天针对一个js数组交集的问题请教了下同事,他第一反应就是循环,这也是常规思路,因为我个人更倾向于js些,我便开玩笑,不知道js能不能像linq那样实现这些操作呢?果断百度了一把,果然有现成框 ...

  2. linq.js

    在做后台开发的时候,总是会碰到将拿到手的数据进行条件校验,而这些数据又不仅仅是单纯的一个,有时候会是一串大数据,需要自己在后台处理进而展示到前台页面上,酱紫自己第一反应就是使用for循环来遍历,并把所 ...

  3. 数组插件----linq.js

    优点 1.支持jQuery插件的方式.jquery.linq.min.js. 2.也可以像普通js方法一样使用.linq.min.js. 3.当然用习惯VS的童鞋肯定希望有个良好的智能感知,是的,它支 ...

  4. H5案例分享:JS手势框架 —— Hammer.js

    JS手势框架 -- Hammer.js 一.hammer.js简介 hammerJS是一个开源的,轻量级的触屏设备javascript手势库,它可以在不需要依赖其他东西的情况下识别触摸,鼠标事件.允许 ...

  5. 从零开始,搭建博客系统MVC5+EF6搭建框架(4)上,前后台页面布局页面实现,介绍使用的UI框架以及JS组件

    一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...

  6. Chrome下的语音控制框架MyVoix.js使用篇(四)

    在上一篇博文中,我为大家介绍了myvoix.js中的smart learning模块,以及何如使用该功能.(myvoix.js的源码地址会在每一篇文章末尾放出) 文本将拓展 Chrome下的语音控制框 ...

  7. 一款很便捷很实用的框架——vue.js

    Hello,大家好!今天给大家带来一款十分好用的框架--vue.js! Vue.js是一套构建用户界面的渐进式框架.它 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 ...

  8. 前端测试框架对比(js单元测试框架对比)

    前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试(Function ...

  9. 【干货】利用MVC5+EF6搭建博客系统(四)(上)前后台页面布局页面实现,介绍使用的UI框架以及JS组件

    一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...

随机推荐

  1. MYSQL中常见的时间处理

    use test; select getdate() select sysdate(); select now(); select current_timestamp select current_t ...

  2. ThinkPHP支持的4种路由模式

    下面这个说法和示例,比较具有总结性.

  3. CentOS 7.5下KVM的安装与配置

    由于没有物理机可用,在自己的VMware Workstation中CentOS 7.5下搭建完成. 首先查看VMware Workstation是否支持虚拟化,把红框内打钩即可. 虚拟化开启并安装Ce ...

  4. 树莓派 Linux 系统命令行快捷键

    刚入门树莓派时,在 Linux 下使用命令操作的时候,光标的移动令人头痛.命令输入完了,执行之后发现缺少权限,然后不得不移动光标到行首加 sudo,而命令又极长……当我学会了命令行相关的快捷键之后,不 ...

  5. jenkins生成的HTML报告中expand与collapse问题

    1.打开jenkins中脚本命令执行页面 2.在脚本命令页面的,输入框中粘贴 System.setProperty("hudson.model.DirectoryBrowserSupport ...

  6. 使用Zookeeper实现负载均衡原理

    思路 使用Zookeeper实现负载均衡原理,服务器端将启动的服务注册到,zk注册中心上,采用临时节点.客户端从zk节点上获取最新服务节点信息,本地使用负载均衡算法,随机分配服务器. 创建项目工程 M ...

  7. C#笔记2 —常量

    基本上和c语言中的常量类似,但有区别 在const关键字的基础上,添加了readonly,readonly关键字在笔记中说明. 常量是固定值,程序执行期间不会改变.常量可以是任何基本数据类型,比如整数 ...

  8. python面试题&练习题之运算符与if控制

    1.任意的输入10个数字,按从大到小排序 l2 = [] for i in range(1,11): num = input('输入第{}个数字'.format(i)) if num.isdigit( ...

  9. (3) esp8266 官方库文件,没有求逆函数

    下载库文件 #include <MatrixMath.h> #define N (2) mtx_type A[N][N]; mtx_type B[N][N]; mtx_type C[N][ ...

  10. HBASE-LSM树(转载)

    HBASE-LSM树 1.B+树 关于B树.B+树.B树的了解参考:* http://blog.csdn.net/v_july_v/article/details/6530142 优点: 走进搜索引擎 ...