整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          javascript基礎內容之數組的賦值

          javascript基礎內容之數組的賦值

          面一個小分享給大家演示了數組的定義、獲取、以及遍歷等小例子

          這一節小分享呢道哥給大家細說一下javascript數組中的賦值,賦值什么意思呢,就是說要把內容都存儲在數組中都有哪些個基本的方法

          在上面的例子中呢大家可以看一下說的呢很基礎,希望能給初學的盆友一點點幫助,在后續的數組案例分享中呢,道哥會一一的給大家分享怎么用數組來實現一些小案例,比如用數組做一個隨機抽取人名的小游戲,用數組呢動態的計算一些平均數啊 總分啊等等等等。

          • 怎么理解迭代與歸并,就是對整個數組進行一系列函數的操作的方法,具體如下。

          every();通過函數核對各項,返回結果true或false,every就是全部符合條件為true。

          some();通過函數核對各項,返回結果true或false,some就是部分符合條件為true。

          filter();通過函數核對各項,返回符合條件項的數組。

          map();通過函數處理各項,返回處理后項的數組。

          forEach();類似于一個for循環來處理數組,注意它是無返回值的。

          reduce();可以理解為一個數組的遍歷函數,它是從頭開始遍歷。

          reduceRight();它是與上一個相反的,從尾往前遍歷數組。

          一、every()返回true或false。

          圖1

          二、some()返回true或false。

          圖2

          三、filter()返回的是數組,而不再是true或是flase。

          圖3

          四、map()返回的也是數組,是經過處理后的數組。

          圖4

          五、forEach(),這里要注意的是,它是沒有返回值的,有點像把數組丟到for循環去處理一樣,你可以把這個函數看成是for的循環體。

          圖5

          六、reduce(),可以理解為一個數組的遍歷函數,它是從頭開始遍歷。

          圖6

          七、reduceRight(),它是與上一個相反的,從尾往前遍歷數組。

          圖7

          本文來源于,落筆承冰原創。

          者在上一篇文章《C語言中為何不能直接對一個數組對象賦值》中談到了為何C語言設計之初沒有把對數組賦值的語法引入的各種緣由。當然,從其語法體系角度而言,一個數組對象作為表達式被使用時,其類型會被隱式轉換為指向其元素類型的指針,而數組本身的引用是不能被修改的,所以像下面的代碼會導致語法錯誤:

          int arr1[3]={ 0 };
          int arr2[3]={ 0 };
          arr1=arr2;    // 相當于:(int * const)arr1=(int *)arr2;

          這是顯而易見的。

          那有沒有辦法能通過某種語法擴展來使得C語言能方便地對數組進行賦值呢?答案是可以被設計出來的!筆者這里通過GNU語法擴展中所引入的 Case Ranges(https://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html),再結合C++17中所完善的折疊表達式fold expression)為C語言設計出 [ from ... to ] 這一索引折疊表達式(index fold expression的語法擴展。


          基本定義

          如果一個表達式中含有 [ from ... to ] 這種表達,那么該表達式即為索引折疊表達式。其通常表現形式為:

          a[ 0 ... 2 ]=b[ 5 ... 7 ];

          相當于:

          ( a[0]=b[5],
            a[1]=b[6],
            a[2]=b[7]
          );

          這里為了簡化編譯器實現,可以將 fromto 限定為常量表達式,即它們必須是編譯時就能確定的常量。這一點是跟GNU語法擴展中所引入的 Case Ranges 所契合的。當 [ from ... to ] 的操作數是一個數組對象時,to 可被缺省。而當 to 被缺省時,其值為 sizeof(array) / sizeof(array[0]) - 1U。這一點也可適用于變長數組。


          約束

          • 對于任何一個 [ from ... to ],必須滿足:from <= to。當 from == to 時,它即被退化為基本表達式primary expression)。
          • 如果一個表達式具有多個 [ from ... to ],那么所有子表達式中的 to - from 的值必須全都相同。
          • 索引折疊表達式的返回值與其他約束均可繼承于逗號表達式


          代碼例子

          int arr1[3]={ 1, 2, 3 };
          int arr2[5]={ 1, 2, 3, 4, 5 };
          // 相當于:(arr1[0]=arr2[2], arr1[1]=arr2[3], arr1[2]=arr2[4]);
          arr1[0 ...]=arr2[2 ...];
          // 相當于:int arr3[3]={ arr2[1], arr2[2], arr[3] };
          int arr3[]={ arr2[1 ... 3] };
          
          int sum=0;
          // 相當于:(sum +=arr1[0], sum +=arr1[1], sum +=arr[2]);
          sum +=arr1[0 ...];
          // 相當于:(arr1[0] +=sum, arr1[1] +=sum, arr1[2] +=sum);
          arr1[0 ...] +=sum;
          
          static bool IsLower(int a, int b)
          {
               return a < b;
          }
          
          bool bArr[3];
          // 相當于:
          // (bArr[0]=IsLower(arr1[0], arr3[0]), 
          //  bArr[1]=IsLower(arr1[1], arr3[1]),
          //  bArr[2]=IsLower(arr1[2], arr3[2])
          // );
          bArr[0 ...]=IsLower(arr1[0 ...], arr3[0 ...]);
          
          int FooInc(int arr[static 3])
          {
              // 相當于:(++arr[0], ++arr[1], ++arr[2]);
              // 注意,arr作為函數形參,其本質上屬于指針,而不是數組,
              // 因此,這里 to 的位置不可缺省!
              ++arr[0 ... 2];
              // 相當于:return (arr[0], arr[1], arr[2]);
              // 因此最后其實返回的是 arr[2] 的值。
              return arr[0 ... 2]; 
          }


          優化

          如果對多個數組或是被 restrict 修飾的指針進行操作的話,編譯器后端可以生成SIMD指令或是使用Intel TBB或微軟的PPL這種并行庫的 parallel_for,對這些數組元素做多線程并行操作。


          主站蜘蛛池模板: 日本一区午夜爱爱| 亚洲AV无码国产一区二区三区| 日韩精品无码一区二区三区免费| 日本精品一区二区三本中文| 亚洲日本中文字幕一区二区三区 | 精品欧洲av无码一区二区三区| 一区 二区 三区 中文字幕| 学生妹亚洲一区二区| 久久精品国产免费一区| 一区二区三区视频网站| 久久久国产精品无码一区二区三区| 中文字幕日韩一区二区三区不| 免费观看日本污污ww网站一区| 亚洲性无码一区二区三区| 久久一区二区精品综合| 成人无码AV一区二区| 精品国产AⅤ一区二区三区4区| 国产激情一区二区三区在线观看| 亚洲天堂一区二区三区四区| 天堂国产一区二区三区| 在线精品亚洲一区二区小说| 国产福利电影一区二区三区久久老子无码午夜伦不| 中文字幕日韩一区二区不卡| 亚洲香蕉久久一区二区| 亚洲第一区视频在线观看| 无码毛片视频一区二区本码 | 四虎成人精品一区二区免费网站 | 日本一区二区在线免费观看| 无码一区二区三区亚洲人妻| eeuss鲁片一区二区三区| 亚洲av成人一区二区三区观看在线 | 精品在线一区二区| 国产av一区二区精品久久凹凸| 国产成人一区二区在线不卡 | 精品国产日韩亚洲一区| 影院无码人妻精品一区二区| 亚洲成av人片一区二区三区 | 老熟妇高潮一区二区三区| 一本久久精品一区二区| 亚洲精品伦理熟女国产一区二区| 亚无码乱人伦一区二区|