<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      每周優(yōu)秀代碼賞析系列【一】----LINQ In Javascript

      2011-10-20 19:49  【當耐特】  閱讀(7572)  評論(23)    收藏  舉報

      一.LINQ簡介

      LINQ,語言集成查詢(Language INtegrated Query)是一組用于c#和Visual Basic語言的擴展。它允許編寫C#或者Visual Basic代碼以查詢數(shù)據(jù)庫相同的方式操作內存數(shù)據(jù)。

      LINQ的出現(xiàn)是基于泛型、擴展方法、Lambda表達式之上,或者說LINQ==Lambda表達式+擴展方法。

       

       

      二.LINQ的好處

      1、無需復雜學習過程即可上手

      2、編寫更少代碼即可創(chuàng)建完整應用。

      3、更快開發(fā)錯誤更少的應用程序。

      4、無需求助奇怪的編程技巧就可操作數(shù)據(jù)源。

      5、讓新開發(fā)者開發(fā)效率更高。

       

       

       

       

       

      三.Javascript也可以LINQ一把

      沒有JSLINQ的日子是痛苦的,沒有JSLINQ讓我恨不得用XNA去寫游戲。

      在我用javascript編寫一些游戲的時候,總是離不開Array。什么對象、point,都塞到在Array當中。

      比如我寫火拼俄羅斯方塊的時候,判斷一行是否堆滿,然后進行消除。我是這樣寫:

      function clearUp() {
          for (var line = 0; line < 21; line++) {
              var count = 0;
              for (var i = 0; i < bottomElement.length; i++) {
                  if (bottomElement[i].y == line) {
                      count++;
                  }
              }
              if (count == 12) clearByLineNum(line);
          }
      }

       

      寫出這么糟糕的代碼,是有歷史原因的。好吧,我總是為自己找借口。雖然寫出這么糟糕的代碼,但是我會惦記著它,因為我知道它一定可以優(yōu)化,可以更簡潔。因為有了linq to javascript:

              var JSLINQ =  function (dataItems) {
                  if (!(this instanceof JSLINQ)) {
                      return new JSLINQ(dataItems);
                  }
                  this.items = dataItems;
              };
              JSLINQ.prototype = {
                  ToArray: function () {
                      return this.items;
                  },
                  Where: function (clause) {
                      var newArray = [];
                      for (var index = 0, length = this.items.length; index < length; index++) {
                          if (clause(this.items[index], index)) {
                              newArray[newArray.length] = this.items[index];
                          }
                      }
                      return new JSLINQ(newArray);
                  }
              };

       

      我就這么無情的,把JSLINQ的心臟部分挖了出來。我們可以這樣使用它:

              var arrayV1 = [];
              arrayV1.push(1);
              arrayV1.push(2);
              arrayV1.push(3);
              var result1 = JSLINQ(arrayV1).Where(function (item) { return item == 1; });     

       

      即找出item為1。當然array當中也可以存對象,然后通過jslinq查詢:

              Vector3 = function (x, y, z) {
                  this.x = x || 0;
                  this.y = y || 0;
                  this.z = z || 0;
              };
       
              var arrayV3 = [];
              arrayV3.push(new Vector3(1, 1, 1));
              arrayV3.push(new Vector3(2, 2, 2));
              arrayV3.push(new Vector3(3, 3, 3));
              var result2 = JSLINQ(arrayV3).Where(function (item) { return item.x == 1; });

       

      即找出Vector3.x為1的。

      當然array當中的對象也可以存對象,然后通過jslinq查詢:

       

              var People = [
          { ID: 1, FirstName: "Chris", LastName: "Pearson", BookIDs: [1001, 1002, 1003] },
          { ID: 2, FirstName: "Kate", LastName: "Johnson", BookIDs: [2001, 2002, 2003] },
          { ID: 3, FirstName: "Josh", LastName: "Sutherland", BookIDs: [3001, 3002, 3003] },
          { ID: 4, FirstName: "John", LastName: "Ronald", BookIDs: [4001, 4002, 4003] },
          { ID: 5, FirstName: "Steve", LastName: "Pinkerton", BookIDs: [1001, 1002, 1003] },
          { ID: 6, FirstName: "Katie", LastName: "Zimmerman", BookIDs: [2001, 2002, 2003] },
          { ID: 7, FirstName: "Dirk", LastName: "Anderson", BookIDs: [3001, 3002, 3003] },
          { ID: 8, FirstName: "Chris", LastName: "Stevenson", BookIDs: [4001, 4002, 4003] },
          { ID: 9, FirstName: "Bernard", LastName: "Sutherland", BookIDs: [1001, 2002, 3003] },
          { ID: 10, FirstName: "Kate", LastName: "Pinkerton", BookIDs: [4001, 3002, 2003] }
      ];
      
              var result3 = JSLINQ(People).
                  Where(function (item) { return item.ID > 7; });

       

      即找出ID大于7的所有people.

       

       

      四.思考題

      如果我想這么查,該怎么辦?

       var result4 = JSLINQ(People).
                  Where(function (item) { return item.BookIDs.Contain(1001); });
      主站蜘蛛池模板: 热99久久这里只有精品| 临澧县| 国99久9在线 | 免费| 99久久精品国产一区二区暴力| 最新国产精品亚洲| 国产欧美日韩va另类在线播放| 欧美日韩中文字幕久久伊人| 午夜福利日本一区二区无码| 三级网站视频在在线播放| 人妻体内射精一区二区三区| 中文字幕人妻丝袜美腿乱| 国产精品黄色精品黄色大片| 人妻av一区二区三区av免费| 欧美成人精品三级在线观看| 欧美老少配性行为| 久久大香伊蕉在人线免费AV| 上虞市| 国产精品麻豆欧美日韩ww | 成人做受120秒试看试看视频| 伊人久久大香线蕉AV网禁呦| 亚洲成人av综合一区| 久久精品人成免费| 伊人成人在线视频免费| 午夜激情小视频一区二区| 国产综合色精品一区二区三区 | 麻豆一区二区三区精品视频| 国内精品一区二区在线观看| 免费无码肉片在线观看| 国产一区二区午夜福利久久| 欧美熟妇性XXXX欧美熟人多毛| 日韩人妻无码精品久久久不卡| 九九久久人妻一区精品色| 婷婷色香五月综合缴缴情香蕉| 正在播放的国产A一片| 宜州市| 精品婷婷色一区二区三区| 中文字幕在线看视频一区二区三区| 免费无码一区无码东京热| 少妇尿尿一区二区在线免费| 亚洲av无码牛牛影视在线二区| 亚洲av成人网人人蜜臀|