优点

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

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

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

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

Linq.js结构图

体验一:查询json对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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就怎么来

1
2
3
4
5
6
7
8
9
10
11
12
13
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;
            });
}

体验三:去重

1
2
3
4
5
6
7
8
9
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;
                });
            }

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

1
2
3
4
5
6
7
8
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

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

总结

能用到这些js的地方有些功能在后台也可以实现,但是我个人更喜欢js的方式,所以就用了上面几个方法,另外看看linq.js的源码对一些算法也能加深理。使用情况和爱好根据个人爱好来定,不过当我找到这个框架时着实有些震撼。

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

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

转载自:http://www.cnblogs.com/sword-successful/archive/2014/11/25/4120946.html

数组插件----linq.js的更多相关文章

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

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

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

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

  3. 移动端下拉刷新、加载更多插件dropload.js(基于jQuery/Zepto)

    移动端下拉刷新.加载更多插件dropload.js(基于jQuery/Zepto) 原文:http://www.grycheng.com/?p=1869 废话不多说,先让大家看一下案例效果: DEMO ...

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

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

  5. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

  6. js-验证码插件gVerify.js

    插件 gVerify.js 源码 !(function(window, document) { function GVerify(options) { //创建一个图形验证码对象,接收options对 ...

  7. 图片预加载插件 preLoad.js

    1.preLoad.js插件 /*! * preLoad.js v1.0 * (c) 2017 Meng Fangui * Released under the MIT License. */ (fu ...

  8. jQuery全屏滚动插件fullPage.js中文帮助文档API

    jQuery全屏滚动插件fullPage.js中文帮助文档API   发现了一个fullPage.js插件,于是百度了一下,还就是这个插件的作用,其实有很多网站都做了全屏滚动的特效,效果也很好看,今天 ...

  9. 前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密

    一.Vue-router(路由) 1.1路由创建 官网:https://router.vuejs.org/zh/ 用 Vue.js + Vue Router 创建单页应用,是非常简单的.使用 Vue. ...

随机推荐

  1. libjson 编译和使用 - 1. 编译

    以下转自:http://blog.csdn.net/laogong5i0/article/details/8212511 最近想用box2dEdit来编辑一下比较复杂的图形然后倒入到自己有游戏里,但b ...

  2. ubuntu14.04上编译安装python3.7.3

    首先先去python官网www.python.org下载python3.7.3的官方压缩包Python-3.7.3.tgz 一.先安装需要的包zlib1g,libffi apt-get update ...

  3. 8个对程序员来说有用的jQuery小贴士和技巧

    1) 禁用鼠标右键单击 jQuery程序员可以使用此代码在网页上禁用鼠标右键点击. 1 2 3 4 5 6 7 8 9 10 $(document).ready(function() {     // ...

  4. ToolBarTray

    <ToolBarTray DockPanel.Dock="Top"> <ToolBar ToolBarTray.IsLocked="True" ...

  5. ACM-尼姆博弈之取(m堆)石子游戏——hdu2176

    取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. zookeeperclient代码解读

    近期一直在忙WebPageTest(下面简称wpt)开源库的改动工作,当中一项工作须要将zookeeper(下面简称zk)集成到wpt里. zk作为分布式系统的同步工具.实现了写的原子性(要么失败.要 ...

  7. Office PPT如何切换到返回幻灯片

    1 如图所示,有"老师""同学""家人"三个板块,如果依次播放,将播放"老师1" "老师2" &qu ...

  8. python——实例方法、静态方法、类方法、类变量和实例变量浅析

    概述: 实例方法就是类的实例能够使用的方法. 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使用装饰器@staticmethod定义静态方法.类对象和实例都可调用静态 ...

  9. JBoss AS 7之基本配置和部署(The Return Of The King)

    1.4 JBoss As 7基本配置 1.4.1 IP訪问控制 因默认情况下,jboss仅可通过127.0.0.1和localhost来訪问.假设你想局域网中的其他IP来訪问,你能够在standalo ...

  10. 如何固定OpenERP顶的主菜单,方便滚动至第二屏以及多屏时,快速切换主菜单

    如何固定OpenERP顶的主菜单,方便滚动至第二屏以及多屏时,快速切换主菜单 作者:广州-步科,来自OpenERP应用群() 将“addons\web\static\src\css”目录下的“base ...