首先要载入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. sharepoint 2010 显示和隐藏Ribbon区域条
  2. smartqq java撤回_基于nodejs的http模块通过smartqq实现自动收发qq消息的程序
  3. P7044-[MCOI-03]括号【组合数学】
  4. 作者:赵菁华(1977-),女,中国电子技术标准化研究院高级工程师。
  5. linux let s证书续期,BT(宝塔面板)Let’s Encrypt证书续签方法
  6. 4月电脑分辨率TOP10 :仅亚军1920*1080占比上涨
  7. 洛谷P5159 WD与矩阵
  8. android平台代号、版本、API 级别和 NDK 版本
  9. 微课|中学生可以这样学Python(4.2节):break与continue语句
  10. wordpress标签或者固定地址中文404错误解决插件
  11. 手机压缩包删除有什么后果?
  12. C语言char的大小写转换
  13. activemq 搭建2
  14. Copula函数初了解
  15. 7-1 前序序列创建二叉树
  16. Maven 阿里云配置 此 MAVEN 配置地表最强不接受反驳
  17. 解决VS2022打开VS2015项目出现报错(warning : 无法找到 Visual Studio 2015 - Windows XP (v140_xp) 的生成工具……)
  18. java上传文件怎么设置成777权限_777权限是什么意思?文件夹权限为777如何修改设置?...
  19. 树莓派控制DS18B20温度传感器
  20. IDEA 导入Junit.jar 包 ,使用 Junit 单元测试过程

热门文章

  1. STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式...
  2. 配置rsync同步+inotify实时监控
  3. 4.闭锁 CountDownLatch
  4. Aop RealProxy 千年遇BUG
  5. 【ASP.NET学习笔记一】ASP.NET页面传参总结
  6. 杂谈(13)第二期办公技能交流分享活动深层次总结
  7. windows xp下Apache2.2.11整合Tomcat6.0.20(集群模式无集群模式)
  8. 【信号处理第十二章】转置卷积
  9. 【激光雷达3D】【论文翻译】PointPillars: Fast Encoders for Object Detection from Point Clouds
  10. simulink 学习(二)