linq.js
在做后台开发的时候,总是会碰到将拿到手的数据进行条件校验,而这些数据又不仅仅是单纯的一个,有时候会是一串大数据,需要自己在后台处理进而展示到前台页面上,酱紫自己第一反应就是使用for循环来遍历,并把所需的数据放在相应的地方。可是导致的后果却是再审视后台的代码时,那么多那么多重复的代码,我可以把对同一个dom节点的遍历写两遍,于是我就被同事大神给嘲笑了,不过幸好,他后来教了我一个“神武器”——linq.js,一个专门解决我遇到的问题的神器。
linq,全称为Language Integrated Query,通过构建快速查询语句,可快速从数据库或集合中筛选数据集、以查询数据库相同的方式操作内存数据。最主要的使用它是来对集合进行各种操作,比如:去重,去空,省略了以往拿for遍历判断取值的麻烦性。话不多说,奉上小小经验:
linq.js相当于是一个前端框架吧,因此使用起来也只是在页面上引入它的js文件而已,或者在thinkjs项目中使用的时候,npm一下linq.js包就好了。这里使用的是express项目:
var express = require('express');
var linq = require('linq');
var router = express.Router(); /* GET home page. */
router.get('/', function(req, res, next) {
var myList = [
{ Name: "Jim", Age: 20,type:1 },
{ Name: "Kate", Age: 20 ,type:2},
{ Name: "Lilei", Age: 18,type:1 },
{ Name: "John", Age: 14,type:2 },
{ Name: "LinTao", Age: 25,type:1 }
];
// var arrRes = linq.from(myList).where("x=>x.Name=='John'").toArray();//条件查询 [{"Name":"John","Age":14,"type":2}]
//var arrRes = linq.from(myList).select("x=>x.Age*10").toArray();//条件选择 [200,200,180,140,250]
//var arrRes = linq.from(myList).orderBy("x=>x.Age").toArray();//排序[{"Name":"John","Age":14,"type":2},{"Name":"Lilei","Age":18,"type":1},{"Name":"Jim","Age":20,"type":1},{"Name":"Kate","Age":20,"type":2},{"Name":"LinTao","Age":25,"type":1}]
var arrRes = linq.from(myList).distinct("x=>x.Age").where("y=>y.type=='2'").toArray();//去重 言外之意是:去重之后再搜索 [{"Name":"John","Age":14,"type":2}]
//var arrRes = linq.from(myList).forEach(function (value, index) {//循环
// console.log('value:'+value.Name+' =======index : '+index)
//});
//var arrRes = linq.from(myList).firstOrDefault('x=>x.Age>18');//取唯一对象:First、FirstOrDefault、Last、LastOrDefault、Single、SingleOrDefault {"Name":"Jim","Age":20,"type":1}
//var arrRes=linq.range(1,10).skip(5).toArray();//结果[6,7,8,9,10]
//var arrRes=linq.range(1,10).take(5).toArray();//结果[1,2,3,4,5] // var array1 = [1,412,5,3,5,412,7];
// var array2 = [20,12,5,5,7,310];
//var arrRes=linq.from(array1).except(array2).toArray();//结果3,412,1 差集
//var arrRes=linq.from(array1).intersect(array2).toArray();//结果5,7 交集
//var arrRes=linq.from(array1).union(array2).toArray();//结果是两个结果集里面所有值,并自动去重 //var arrRes=linq.range(1,10).where('x=>x%2==0').toArray();
// res.render('index', { title: JSON.stringify(arrRes) }); // var arr1=["2","",""];
// var arrRes=linq.from(arr1).where("x=>x==''").toArray();
console.log("=============="+JSON.stringify(arrRes)); }); module.exports = router;
这是使用express框架,linq.js做的一个简单的应用,但在实际开发过程中,使用这个小小的文件就可以节省很多时间。想明白其效果的童鞋可以小试一把哦!
linq.js的更多相关文章
- 【JavaScript】又一神器框架:linq.js
引言 前几天针对一个js数组交集的问题请教了下同事,他第一反应就是循环,这也是常规思路,因为我个人更倾向于js些,我便开玩笑,不知道js能不能像linq那样实现这些操作呢?果断百度了一把,果然有现成框 ...
- 查询Array中确定数值的对象&JS linq使用 = linq.js
var x=new Array(); x.push({"a":3,"b":3},{"a":2,"b":2},{" ...
- 数组插件----linq.js
优点 1.支持jQuery插件的方式.jquery.linq.min.js. 2.也可以像普通js方法一样使用.linq.min.js. 3.当然用习惯VS的童鞋肯定希望有个良好的智能感知,是的,它支 ...
- linq.js的用法
linq.js 详细介绍 linq.js 是一个 JavaScript 实现的 LINQ. 主要特性: 实现所有 .NET 4.0 的方法 complete lazy evaluation full ...
- 又一神器框架:linq.js
1.支持jQuery插件的方式.jquery.linq.min.js. 2.也可以像普通js方法一样使用.linq.min.js. 3.当然用习惯VS的童鞋肯定希望有个良好的智能感知,是的,它支持. ...
- js 对json数据进行检索 插件 linq.js
有时界面需要很多数据.但是多次访问服务器效率很低,所以需要检索json数据,最好是像sql查询语句那种 linq.js 插件 LINQ,语言集成查询(Language Integrated Query ...
- Linq.js表达式常见写法
1.回调函数法 2.lambda表达式字符串 3.$符号的表达式
- linq.js - LINQ for JavaScript
var jsonArray = [ { "user": { "id": 100, "screen_name": "d_linq&q ...
- linq to js使用汇总
用途:方便js操作查询json数据. 下载网址:http://jslinq.codeplex.com/ 使用方法:只需要引用linq.js即可. 查询方法: 一.where查询 var myList ...
随机推荐
- 图解SQL 2008数据库复制
为了达到数据及时备份,一般采用完整备份+差异备份即可,或者再加上日志备份,本文介绍使用数据库复制技术同步数据: PS:文章以图片为主,图片更能直观的看出操作步骤和配置方法! 1.首先创建一个测试的数据 ...
- ServiceStack.OrmLite 学习笔记7-复杂点的使用1
复杂点的使用1 先看看这2个类 class Customer { public int Id { get; set; } ... } class CustomerAddress { public in ...
- LTE Module User Documentation(翻译1)——背景、使用概述、基本的仿真程序和配置LTE模型参数
LTE用户文档 (如有不当的地方,欢迎指正!) 1.背景 假定读者已经熟悉 ns-3 simulator ,能运行一般的仿真程序.如果不是的话,强烈推荐读者参考 [ns3tutorial]. 2. ...
- jQuery动态加载脚本 $.getScript();
jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) { /* ...
- spring.hibernate设置参数的位置问题
1.spring的注解设置在set方法上 2.hibernate的注解设置在get方法上
- HBase集群搭建
HBase集群搭建 搭建环境:假设我们的linux环境已经准备好,包括网络.JDK.防火墙.主机名.免密登录等都没有问题,而且一定要有zookeeper.下面我们用3台linux虚拟机来搭建Hbase ...
- Kafka消息保证不丢失和重复消费问题
使用同步模式的时候,有3种状态保证消息被安全生产,在配置为1(只保证写入leader成功)的话,如果刚好leader partition挂了,数据就会丢失.还有一种情况可能会丢失消息,就是使用异步模式 ...
- 出现Warning:Gradle version 2.10 is required. Current version is 2.8.
Warning:Gradle version 2.10 is required. Current version is 2.8. If using the gradle wrapper, try ed ...
- 联想手机#P1来了#P1背后的故事系列
http://bbs.lenovo.com/forum.php?mod=viewthread&fid=928&tid=560992&extra=page%3D1 联想手机#P1 ...
- WebSocket 浅析
版权声明:本文由史燕飞原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/241 来源:腾云阁 https://www.qclo ...