又一神器框架:linq.js
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的更多相关文章
- 【JavaScript】又一神器框架:linq.js
引言 前几天针对一个js数组交集的问题请教了下同事,他第一反应就是循环,这也是常规思路,因为我个人更倾向于js些,我便开玩笑,不知道js能不能像linq那样实现这些操作呢?果断百度了一把,果然有现成框 ...
- linq.js
在做后台开发的时候,总是会碰到将拿到手的数据进行条件校验,而这些数据又不仅仅是单纯的一个,有时候会是一串大数据,需要自己在后台处理进而展示到前台页面上,酱紫自己第一反应就是使用for循环来遍历,并把所 ...
- 数组插件----linq.js
优点 1.支持jQuery插件的方式.jquery.linq.min.js. 2.也可以像普通js方法一样使用.linq.min.js. 3.当然用习惯VS的童鞋肯定希望有个良好的智能感知,是的,它支 ...
- H5案例分享:JS手势框架 —— Hammer.js
JS手势框架 -- Hammer.js 一.hammer.js简介 hammerJS是一个开源的,轻量级的触屏设备javascript手势库,它可以在不需要依赖其他东西的情况下识别触摸,鼠标事件.允许 ...
- 从零开始,搭建博客系统MVC5+EF6搭建框架(4)上,前后台页面布局页面实现,介绍使用的UI框架以及JS组件
一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...
- Chrome下的语音控制框架MyVoix.js使用篇(四)
在上一篇博文中,我为大家介绍了myvoix.js中的smart learning模块,以及何如使用该功能.(myvoix.js的源码地址会在每一篇文章末尾放出) 文本将拓展 Chrome下的语音控制框 ...
- 一款很便捷很实用的框架——vue.js
Hello,大家好!今天给大家带来一款十分好用的框架--vue.js! Vue.js是一套构建用户界面的渐进式框架.它 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 ...
- 前端测试框架对比(js单元测试框架对比)
前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试(Function ...
- 【干货】利用MVC5+EF6搭建博客系统(四)(上)前后台页面布局页面实现,介绍使用的UI框架以及JS组件
一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...
随机推荐
- 决策树算法原理--good blog
转载于:http://www.cnblogs.com/pinard/p/6050306.html (楼主总结的很好,就拿来主义了,不顾以后还是多像楼主学习) 决策树算法在机器学习中算是很经典的一个算法 ...
- KMP算法的时间复杂度与next数组分析
一.什么是 KMP 算法 KMP 算法是一种改进的字符串匹配算法,用于判断一个字符串是否是另一个字符串的子串 二.KMP 算法的时间复杂度 O(m+n) 三.Next 数组 - KMP 算法的核心 K ...
- Kotlin函数使用综述与显式返回类型分析
位置参数与具名参数: 继续接着上一次https://www.cnblogs.com/webor2006/p/11498842.html的方法参数学习,再定义一个函数来说明具名参数的问题: 调用一下,先 ...
- 微信小程序之 ECMAScript
在大部分开发者看来,ECMAScript和JavaScript表达的是同一种含义,但是严格的说,两者的意义是不同的.ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言 ...
- 树莓派 Linux 系统命令行快捷键
刚入门树莓派时,在 Linux 下使用命令操作的时候,光标的移动令人头痛.命令输入完了,执行之后发现缺少权限,然后不得不移动光标到行首加 sudo,而命令又极长……当我学会了命令行相关的快捷键之后,不 ...
- 项目Alpha冲刺--10/10
项目Alpha冲刺--10/10 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综 ...
- 微信程序开发之-WeixinJSBridge调用
微信的WeixinJSBridge还是很厉害的,虽然官方文档只公布了3个功能,但是还内置的很多功能没公布,但是存在.今天就好好和大家聊聊 功能1------发送给好友 代码如下: functi ...
- Java 内部类和Lambda
Java内部类 内部类又称为嵌套类,是在类中定义另外一个类.内部类可以处于方法内/外,内部类的成员变量/方法名可以和外部类的相同.内部类编译后会成为完全不同的两个类,分别为outer.class和ou ...
- 为啥用DTO
0.部分参数对于开发前端的人来说是无意义的,因为传递也没有效果.所以不应该暴露给前端使用. 1.依据现有的类代码,即可方便的构造出DTO对象,而无需重新进行分析. 2.减少请求次数,大大提高效率. 3 ...
- learning svn diff --summarize
# svn diff --summarizeA armbian-custom-dc/test/4g-power.shA armbian-custom-dc/test/4g-reset.shM armb ...