文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Javascript版IEnumerable

Javascript版IEnumerable

时间:2010-09-20  来源:飯團

本js库利用原型生成扩展方法主要针对json数据的查询和一些扩展计算,当然你可以对一般的数组甚至Jquery对象进行查询和计算,另外本库不依赖Jquery 当在本库之前加载jquery时会生成对jquery对象的转换方法,Demo中引用的jquery以及其的一个扩展库只是为了方便展示,并非必要

 

下面是一些介绍

不得不承认我被.NET"毒害"很深,习惯了一些方便的方法因此推广到页面前端的工作上,可能对不熟悉C#风格的童鞋起不到很好的帮助

正传吧

本库的基本对象为js_lambda, js Object可以通过AsEnumerable()转换成js_lambda对象

执行方法后有些依然返回js_lambda对象,这些可以进行复杂的连续方法,有些会返回Object,一般都为单个对象,如果有需要可以套中括号变成数组

js_lambda对象可以通过属性Value取到Object

我们先假设一个json对象,恩。。1个可能不够就来2个吧-___,-

var obj = [{ "id": 2, "content": "C" }, { "id": 1, "content": "D" }, { "id": 3, "content": "A"}];
var obj2 = [{ "id": 4, "content": "E" }, { "id": 6, "content": "F" }, { "id": 5, "content": "B"}];

 

因为下面演示的需要,再声明一个伪类

var newclass = function (o) {
            this.idx = o + 1;
        }

 

Select(T):js_lambda      ①T:func(object,js_lambda)将序列中的每个元素投影到新表中

             ②T:func(object,int,js_lambda)通过合并元素的索引将序列的每个元素投影到新表中 

查询某属性:

var data = obj.AsEnumerable().Select("i=>i.id").Value;

 

合并索引数据查询所有属性并重新组装成匿名类:

var data = obj.AsEnumerable().Select("(i,index)=>new {a=index+1,b=i.id,c=i.content}").Value;

 

合并索引数据查询所有属性并重新组装成js命名伪类,就是之前的newclass君:

var data = obj.AsEnumerable().Select("(i,index)=>new newclass(index){id=i.id,content=i.content}").Value;

 

 

Where(T):js_lambda    ①T:func(object,js_lambda) 基于谓词筛选值序列

             ②T:func(object,int,js_lambda)基于谓词筛选值序列。将在谓词函数的逻辑中使用每个元素的索引

条件查询:

 

var data = obj.AsEnumerable().Where("i=>i.id>1").Value;

 

合并索引数据后条件查询: 

var data = obj.AsEnumerable().Where("(i,index)=>i.content<'C'||index<1").Value;

 

 

Union(js_lambda):js_lambda   通过使用默认的相等比较器生成两个序列的并集

合并obj和obj2:

 

var data = obj.AsEnumerable().Union(obj2.AsEnumerable()).Value;

 

 

OrderBy(T):js_lambda   T:func(object,js_lambda)根据键按升序对序列的元素排序

对id做正序:

var data = obj.AsEnumerable().OrderBy("i=>i.id").Value;

 

 

OrderByDescending(T):js_lambda   T:func(object,js_lambda)根据键按升序对序列的元素排序

对content做倒序:

var data = obj.AsEnumerable().OrderByDescending("i=>i.content").Value;

 

 

First():Object  返回序列中的第一个元素

var data = obj.AsEnumerable().First();

 

 

Last(): Object  返回序列的最后一个元素

var data = obj.AsEnumerable().Last();

 

 

Min(T):Object 返回谓词序列中的最小值

取id最小值:

var data = obj.AsEnumerable().Min("i=>i.id");

 

 

Max(T):Object 返回谓词序列中的最大值

取content最大值:

var data = obj.AsEnumerable().Max("i=>i.content");

 

 

Sum(T):Object 计算谓词序列之和

对content求和:

var data = obj.AsEnumerable().Sum("i=>i.content");

 

 

Aggregate(T):Object 对序列应用累加器函数

对id累加求和:

var data = obj.AsEnumerable().Select("i=>i.id").Aggregate("(i,next)=>i+next");

 

 

合并obj和obj2,对content反向累加并以'_'号连接,且当content不大于'C'时以'B'替换之: var data = obj.AsEnumerable().Union(obj2.AsEnumerable()).Select("i=>i.content").Aggregate("(i,next)=>(next>'C'?next:'B')+'_'+i");

 

附件:Demo和库

 /Files/ibean/js_lambda_Simpple.rar

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载