jQuery扩展半Lambda表达式 类似Linq的Where
首先要载入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相关推荐
- [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询
此文章非原创,转载自诗人江湖老,原文地址 在Git上下载源码 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找.过滤等等常见的任务的时候 ...
- C#——《C#语言程序设计》实验报告——综合练习——委托、Lambda表达式、LINQ、接口
问题描述 1.使用委托.Lambda表达式.LINQ等知识完成以下内容:(本题35分) (1)要求定义Employee类,带有Name属性(string类型),带有Birthday属性(DateTim ...
- 用c#算成绩的总和_C# 基础知识系列- 6 Lambda表达式和Linq简单介绍
前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...
- SQL、Linq和Lambda表达式 的关系
首先说说这三者完全是三种不同的东西,SQL是结构化查询语言(Structured Query Language)简称,这大家再熟悉不过了,下面主要介绍LINQ和Lambda表达式的基本概念以及同一查询 ...
- Linq之Lambda表达式初步认识
目录 写在前面 匿名方法 一个例子 Lambda 定义 一个例子 总结 参考文章 写在前面 元旦三天在家闲着无事,就看了看Linq的相关内容,也准备系统的学习一下,作为学习Linq的前奏,还是先得说说 ...
- Linq lambda表达式经验总结
Linq有很多值得学习的地方,这里我们主要介绍Linq lambda表达式,包括介绍Expression tree等方面. Linq lambda表达式 了解过C# 3.0的新特性的话应该知道,在C# ...
- C#学习基本概念之匿名方法及Lambda表达式
在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法. C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式. ...
- C#3.0之神奇的Lambda表达式和Lambda语句
"Lambda 表达式"是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型.所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读 ...
- C# Lambda 表达式
简介: "Lambda 表达式"是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型.所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算 ...
- Lambda表达式表达式树
在C#3.0中,继匿名方法之后出现了Lambda 表达式,使表达更为简洁.快捷.Lambda 表达式使用Lambda 运算符 "=>"来定义,语法如下: (参数列表) =&g ...
最新文章
- sharepoint 2010 显示和隐藏Ribbon区域条
- smartqq java撤回_基于nodejs的http模块通过smartqq实现自动收发qq消息的程序
- P7044-[MCOI-03]括号【组合数学】
- 作者:赵菁华(1977-),女,中国电子技术标准化研究院高级工程师。
- linux let s证书续期,BT(宝塔面板)Let’s Encrypt证书续签方法
- 4月电脑分辨率TOP10 :仅亚军1920*1080占比上涨
- 洛谷P5159 WD与矩阵
- android平台代号、版本、API 级别和 NDK 版本
- 微课|中学生可以这样学Python(4.2节):break与continue语句
- wordpress标签或者固定地址中文404错误解决插件
- 手机压缩包删除有什么后果?
- C语言char的大小写转换
- activemq 搭建2
- Copula函数初了解
- 7-1 前序序列创建二叉树
- Maven 阿里云配置 此 MAVEN 配置地表最强不接受反驳
- 解决VS2022打开VS2015项目出现报错(warning : 无法找到 Visual Studio 2015 - Windows XP (v140_xp) 的生成工具……)
- java上传文件怎么设置成777权限_777权限是什么意思?文件夹权限为777如何修改设置?...
- 树莓派控制DS18B20温度传感器
- IDEA 导入Junit.jar 包 ,使用 Junit 单元测试过程
热门文章
- STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式...
- 配置rsync同步+inotify实时监控
- 4.闭锁 CountDownLatch
- Aop RealProxy 千年遇BUG
- 【ASP.NET学习笔记一】ASP.NET页面传参总结
- 杂谈(13)第二期办公技能交流分享活动深层次总结
- windows xp下Apache2.2.11整合Tomcat6.0.20(集群模式无集群模式)
- 【信号处理第十二章】转置卷积
- 【激光雷达3D】【论文翻译】PointPillars: Fast Encoders for Object Detection from Point Clouds
- simulink 学习(二)