JavaSctipt Array Linq帮助类

在日程工作中经常会遇到这样的问题 一个JS数组 我们要找出其中 一些符合要求的类容

又或者对数组里的类容求和求平均数之类的一般的做法是循环里面的类容做判断添加到一个新的集合里

var array = [];
  array.push(1);
  array.push(2);
  array.push(3);
  array.push(4);
  array.push(5);
  array.push(6);

  var whereArray = [];
  for(var model in array)
  {
    if(model<3)
    {
        whereArray.push(model);
    }
 }

如果需要做查询的代码多了我们就不得不写非常多的循环

回想下C#里的List集合和Array也差不多 但是System.Linq.Enumerable 扩展类 却给了他非常多的Linq 扩展方法

使们我们能像如下代码这样查询List

List<int> list = new List<int>();
        a.Add(1);
        a.Add(2);
        a.Add(3);
        a.Add(4);
        a.Add(5);
        a.Add(6);
         List<int> copyList = list.Where(model => model < 3);

拿JavaSctipt 能不能做出一个跟System.Linq.Enumerable 差不多一样的扩展类来了答案是能的我们来定义一段如下的JavaScript脚本

Array.prototype.Where = function (func) {
                    var copy = [];
                    for (var model in this) {
                        try {
                            if (func(model)) {
                                copy.push(model);
                            }
                        }
                        catch (ex) { }
                    }
                }

把它放在页面顶部我们会惊喜的发现 Array 多了一个Where方法 Javascript 每个类的方法都会在prototype中向他添加一个方法也就是向内中添加了一个方法

我们来调用试下

var array = [1,2,3,4,5,6];

var copyArray = array.Where(function (model) {return model < 1;})

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/

我们会发现这段代码得到了和第一段代码相同的效果但代码却要减少不少

这样我们就可以吧 其他System.Linq.Enumerable里的常用方法挨个定义出来

(function () {
                    /*
                    筛选符合要求的元素
                    func: (e)=>{return bool}
                    return Array
                    */
                    Array.prototype.Where = function (func) {
                        var copy = [];
                        for (var model in this) {
                            try {
                                if (func(model)) {
                                    copy.push(model);
                                }
                            }
                            catch (ex) { }
                        }
                    }
                    /*
                    求和
                    func: (e)=>{return Number}
                    return Number
                    */
                    Array.prototype.Sum = function (func) {

                        var int = 0;
                        for (var model in this) {
                            try {
                                var NaN = func(model);
                                if (isNaN(NaN)) {
                                    a += NaN * 1;
                                }
                            }
                            catch (ex) { }
                        }
                        return int;
                    }
                    /*
                    获取集合里第一个符合要求的元素
                    func: (e)=>{return bool}
                    return e or NULL
                    */
                    Array.prototype.Find = function (func) {
                        for (var model in this) {
                            try {
                                if (func(model)) {
                                    return model;
                                }
                            }
                            catch (ex) { }
                        }
                        return null
                    }
                })(Array)

定义好后每次 使用就直接把存放这段JS的文件拖到页面上 每次就都能使用这些扩展方法了

还有一点就是JavaSctipt 里的方法注释是这样的/**/ 而不是//

区别就是在VS IDE里能有 提示

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索return
, 方法
, array
, model
, var
, func
, javasctipt
, model类
js数组求和
找不到javasctipt、linq to array、linq 帮助类、c linq、linq group by,以便于您获取更多的相关知识。

时间: 2024-10-15 03:38:31

JavaSctipt Array Linq帮助类的相关文章

javasctipt Array.find 对象函数用法

javasctipt  Array.find 对象函数用法 国外网站参考 ere are three ways of defining an array: var myfriends=new Array() //1) regular array. Pass an optional integer argument to control array's size. myfriends[0]="John" myfriends[1]="Bob" myfriends[2]=

数组排序方法的性能比较(3):LINQ排序实现分析

上次我们分析了Array.Sort<T>方法的实现方式,并了解到类库会为一些特例而使用高性能的排 序方式--int数组便是这样一例,因此从测试结果上来看其性能特别高.不过从数据上看,即便是在普 通的情况下,Array.Sort<T>的性能也比LINQ排序要高.不过也有朋友从测试中得出的结论正好相 反,这又是为什么呢?那么现在,我们再来分析一下LINQ排序的实现方式吧,希望这样可以了解到两者性 能差别的秘密. 只可惜,LINQ排序的代码在System.Core.dll程序集中,微软没

【LINQ技术】扩展特性和LINQ操作符

LINQ特有的编程结构 LINQ就像是嵌入到C#中的强类型查询语言,尽管和SQL查询很像,但语法却并不相同,甚至还有截然相反的一面. LINQ是在.NET发展到3.5版的时候被引进的,C#和VB语言都为此做了许多工作,扩展了大量新的编程结构. 一.隐式类型本地变量 var--一个如此小巧的关键字却有着强大的力量. var varInt=1; var varBool=True; var varString="String, String, String"; Console.WriteLi

一起谈.NET技术,数组排序方法的性能比较(3):LINQ排序实现分析

上次我们分析了Array.Sort方法的实现方式,并了解到类库会为一些特例而使用高性能的排序方式--int数组便是这样一例,因此从测试结果上来看其性能特别高.不过从数据上看,即便是在普通的情况下,Array.Sort的性能也比LINQ排序要高.不过也有朋友从测试中得出的结论正好相反,这又是为什么呢?那么现在,我们再来分析一下LINQ排序的实现方式吧,希望这样可以了解到两者性能差别的秘密. 只可惜,LINQ排序的代码在System.Core.dll程序集中,微软没有发布这部分源代码,我们只得使用.

使用MFC的数组类

MFC的数组类支持的数组类似于C++中的常规数组,可以存放任何数据类型.C++的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的. MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,CWordArray,CUIntArray,CDWordArray,CStringArray,CObArray,CP

LINQ 查询语法

        在LINQ中,数据源和查询结果实际上都是IEnumerable<T>或IQueryable<T>类型对象           LINQ主要的功能就是实现查询,LINQ查询存在以下两种形式.           ⑴ Method Synta (查询方法方式):主要利用 System.Linq.Enumerable 类中定义的扩展方法和Lambda 表达式方式进行查询.它提供了一种增强了程序的可读性的语法,易读易写,写时不容易出错.Visual Studio 2010为

linq查询为什么出错

问题描述 想使用linq技术操作xml文件,其他功能都能使用,就是无法使用查询语句,用了一个最简单的例子还是有错.int[]arr=newint[]{8,5,89,3,56,4,1,58};varm=fromninarrwheren<5orderbynselectn;foreach(varninm){Console.WriteLine(n);}错误信息如下:D:WebSitenetworkgraph副本Default3.aspx.cs(148,22):错误CS1002:应输入;D:WebSite

Array.prototype 的泛型应用分析_javascript技巧

题目 请说明下面语句的输出: 复制代码 代码如下: x = {shift:[].shift}; x.shift(); console.info(x.length); 如果你回答正确,那么说明你已经了解 Array 函数的泛型应用.在理解这到题目之前,我 我们首先要了解数组(Array)的 shift 定义. MDC 中已经对相关的说明描述得非常的清楚 复制代码 代码如下: shift is intentionally generic; this method can be called or a

Linq to XML节点查找删除修改实现代码

本文并不对它的概念进行详细介绍,取而代之的是说说在.Net下怎么去操作XML文件.点一下题外话,XML是标准通用标记语言(SGML)的子集,可以跨平台运行,非常适合Web传输,在不同的编程语言(PHP.Java..Net等)里面都有广泛运用,所以对于XML的操作,将是你必须掌握的一门技术.   下面我们来看看XML文档是长什么样子的,这里将要以下图为例来进行说明.XML可以用来描述数据定义.类型等,它一般是被用作数据存储和数据传输. 图 一   用下面的方法可以生成上面xml的文件,生成一个xm