zoukankan      html  css  js  c++  java
  • linq.js

    今天在项目里发现一个类似于linq的写法,上网百度了一下发现是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;

    我自己觉得linq对于那种需要两次遍历的操作还是蛮有用的,可以减少很多代码和时间。

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/junshijie/p/6761654.html
Copyright © 2011-2022 走看看