首先要载入jquery

//半Lambda表达式的Javascript,返回List

Array.prototype.where = function (s) { return eval("(jQuery.grep(this, function (o, i){return " + s + ";}))"); }

除去空格仅有98个字符(这扩展够精简的了,也可以拆出来用jQuery.grep但如果页面上很多地方用到,代码就多了)

有人说依赖jQuery不好用(现在多少系统写JS必备jquery,这个不说)

有人说eval效率差(请你自己试试,能不能在项目中使用,反正这个where我在项目中用很多,并不见得卡

使用方法:

Demo 1://基础

var arr = [3,5,7,8];

var list1 = arr.where("o > 5") ; //得到[7,8]

var list2 = arr.where("i  < 3"); // 得到[3,5,7]

Demo 2:  //进阶

var arr = [{id:1,name:"Jay"},{id:2,name:"Joy"},{id:3,name:"Bob"}];

var list1 = arr.where("o.name == 'Joy'"); //得到 [{id:2,name:"Joy"}] ;

var list2 = arr.where("o.name.indexOf('o')!=-1");//得到name含有'o'字母的 [{id:2,name:"Joy"},{id:3,name:"Bob"}];

Demo 3: //高级

var arr =[{name:"Jay",age:29,c:[{name:"A"},{name:"B"}]},{name:"Jay",age:26,c:[]},{name:"Jay",age:24,c:[{name:"C"}]}];

var list1 = arr.where("o.age > 25 && !o.c && o.c.length > 0");

//年龄大于25且至少有一个孩子 [{name:"Jay",age:29,children:[{name:"A"},{name:"B"}]}]

提醒:得到的list是原来的对象,不是副本,通过 list1[0].name = "XX" 可以更改 arr[0]的name

缺点:

  where被扩展到Array中,for(var i in arr) 会遍历到 where

  因此,以后想用for要做好判断 或者 采用 $(arr).each(function(i,o){        })取代(建议) ,也可以不扩展到Array,自己写全局Function

有些什么不足或建议,希望大家提出来改进,谢谢!

转载于:https://www.cnblogs.com/ycbt/archive/2013/01/29/2881245.html

jQuery扩展半Lambda表达式 类似Linq的Where相关推荐

  1. [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询

    此文章非原创,转载自诗人江湖老,原文地址 在Git上下载源码 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找.过滤等等常见的任务的时候 ...

  2. C#——《C#语言程序设计》实验报告——综合练习——委托、Lambda表达式、LINQ、接口

    问题描述 1.使用委托.Lambda表达式.LINQ等知识完成以下内容:(本题35分) (1)要求定义Employee类,带有Name属性(string类型),带有Birthday属性(DateTim ...

  3. 用c#算成绩的总和_C# 基础知识系列- 6 Lambda表达式和Linq简单介绍

    前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...

  4. SQL、Linq和Lambda表达式 的关系

    首先说说这三者完全是三种不同的东西,SQL是结构化查询语言(Structured Query Language)简称,这大家再熟悉不过了,下面主要介绍LINQ和Lambda表达式的基本概念以及同一查询 ...

  5. Linq之Lambda表达式初步认识

    目录 写在前面 匿名方法 一个例子 Lambda 定义 一个例子 总结 参考文章 写在前面 元旦三天在家闲着无事,就看了看Linq的相关内容,也准备系统的学习一下,作为学习Linq的前奏,还是先得说说 ...

  6. Linq lambda表达式经验总结

    Linq有很多值得学习的地方,这里我们主要介绍Linq lambda表达式,包括介绍Expression tree等方面. Linq lambda表达式 了解过C# 3.0的新特性的话应该知道,在C# ...

  7. C#学习基本概念之匿名方法及Lambda表达式

    在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法.  C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式. ...

  8. C#3.0之神奇的Lambda表达式和Lambda语句

    "Lambda 表达式"是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型.所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读 ...

  9. C# Lambda 表达式

    简介: "Lambda 表达式"是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型.所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算 ...

  10. Lambda表达式表达式树

    在C#3.0中,继匿名方法之后出现了Lambda 表达式,使表达更为简洁.快捷.Lambda 表达式使用Lambda 运算符 "=>"来定义,语法如下: (参数列表) =&g ...

最新文章

  1. 在JavaScript中重复字符串的三种方法
  2. [1204 寻找子串位置] 解题报告
  3. 消息队列-RabbitMq(PHP)
  4. .size .shape .size() type的运用
  5. 计算机东大计算机三在线作业,东大16秋学期《计算机基础》在线作业3
  6. 常见的网页布局(HTML、CSS)
  7. Android开发检测网络是否连接
  8. 小米路由器mini WOL网络唤醒插件
  9. Bootstrap 学习笔记1 - CSS
  10. Youtube上传视频处理失败怎么办
  11. Linux内核态调用用户态函数
  12. 大数据可视化技术与应用作业一的经验总结
  13. 完成“LPS node 与Crazyflie在TWR协议下的成功双向测距”实现心路历程总结
  14. 涨知识了!阿里规定超过三张表禁止join,为啥?
  15. SQL Server(六)-Transact-SQL语言
  16. 计算机休眠后无法唤醒出现蓝屏,笔记本电脑进入睡眠,唤醒后出现蓝屏怎么回事?...
  17. gc System.gc() fullGC
  18. 爱心捐赠爱传情 暖心行动暖寒冬
  19. java swing开发窗体程序开发(四)MVC结构
  20. 使用codemirror打造你自己的前端在线编辑器

热门文章

  1. mysql事务和锁 SELECT FOR UPDATE
  2. python设计模式-模板方法模式
  3. DB2数据库对象设计
  4. Maven项目导出War包
  5. CORE网络数据包接收传递过程分析
  6. wxPython控件学习之TextCtrl(二)多行及样式文本框
  7. Android 编译时出现r cannot be resolved to a variable
  8. Linux基础之vim文本编辑器
  9. 跟我一起考PMP---项目的管理过程
  10. 判断元素是否为HTMLElement元素