在做后台开发的时候,总是会碰到将拿到手的数据进行条件校验,而这些数据又不仅仅是单纯的一个,有时候会是一串大数据,需要自己在后台处理进而展示到前台页面上,酱紫自己第一反应就是使用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的更多相关文章

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

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

  2. 查询Array中确定数值的对象&JS linq使用 = linq.js

    var x=new Array(); x.push({"a":3,"b":3},{"a":2,"b":2},{" ...

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

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

  4. linq.js的用法

    linq.js 详细介绍 linq.js 是一个 JavaScript 实现的 LINQ. 主要特性: 实现所有 .NET 4.0 的方法 complete lazy evaluation full ...

  5. 又一神器框架:linq.js

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

  6. js 对json数据进行检索 插件 linq.js

    有时界面需要很多数据.但是多次访问服务器效率很低,所以需要检索json数据,最好是像sql查询语句那种 linq.js 插件 LINQ,语言集成查询(Language Integrated Query ...

  7. Linq.js表达式常见写法

    1.回调函数法 2.lambda表达式字符串 3.$符号的表达式

  8. linq.js - LINQ for JavaScript

    var jsonArray = [ { "user": { "id": 100, "screen_name": "d_linq&q ...

  9. linq to js使用汇总

    用途:方便js操作查询json数据. 下载网址:http://jslinq.codeplex.com/ 使用方法:只需要引用linq.js即可. 查询方法: 一.where查询 var myList ...

随机推荐

  1. Linux基础01 学会使用命令帮助

    Linux基础01 学会使用命令帮助 概述 在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档:linux系统内置的帮助文档很详细,通常能解决我们的问题, ...

  2. [资源] Getting started with Tensorflow

    Learning Website / Blog: Official Tutorial: https://www.tensorflow.org/tutorial Learn Tensorflow: ht ...

  3. Perl5中19个最重要的文件系统工具

    在写脚本处理文件系统时,经常需要加载很多模块.其中好多有用函数分散在各种不同的模块中.它们有些是Perl的内置函数,有些是在同Perl一起发行的标准模块中,另外一些是通过CPAN安装的. 下面来看15 ...

  4. XAF应用开发教程(三)业务对象模型之引用类型与关联关系

    本节介绍信息系统开发中最常见的问题,引用关系,一对多关系,多对多关系. 以客户信息为例,客户通常需要客户分类,如VIP客户,普通客户,潜在客户.当然,我们可以定义枚举类型进行定义出这个类型,并在客户类 ...

  5. Android中序列化对象到XMl 和 XML反序列化为对象

    package com.example.xmloperation; import java.io.File; import java.io.FileOutputStream; import java. ...

  6. mysql概要(七)表字段管理,字段的增删改

    1.添加列 放在某列之后 放第一列: 2.修改(声明和名字),删除列 2.1修改声明 2.2删除列

  7. Can of Worms 【迭代/线段树】

    题意:一条直线上有n个炸弹,给出每个炸弹的爆炸半径,可以引爆另一个炸弹爆炸.问:每个炸弹爆炸后,最多有几个炸弹一起爆炸? 迭代,用线段树更新. #include <cstdio> #inc ...

  8. CnPlugin 1.5.400

    本软件CnPlugin是PL/SQL Developer工具插件,支持PL/SQL Developer 7.0以上版本.增加了PL/SQL Developer工具本身所没有的一些小功能,功能基本一些已 ...

  9. C# winform解决解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题

    public frmMain() { InitializeComponent(); //解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题 int x = Convert.ToInt32(( ...

  10. eclipse如何调试(Debug)程序(zhuan)

    http://jingyan.baidu.com/article/e6c8503c7e46b6e54f1a18c5.html ************************************* ...