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