青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

專職C++

不能停止的腳步

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

常用鏈接

留言簿(28)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

前面一篇,我們寫了數組的基礎,在這里則會把主要的方法和應用列出來. 

數組方法

檢測數組 Array.isArray

ECMAScript 5 新增了 Array.isArray() 方法。這個方法的目的是最終確定某 
個值到底是不是數組,而不管它是在哪個全局執(zhí)行環(huán)境中創(chuàng)建的。這個方法的用法如下。

  1. if (Array.isArray(value)){
  2. //對數組執(zhí)行某些操作
  3. }

位置方法 indexOf和lastIndexOf


  • indexOf(searchvalue,fromindex) 從數組的頭開始向后查找
  • indexOf和lastIndexOf(searchvalue,fromindex) 從數組的尾開始向前查找

接收兩個參數:

  • searchvalue 要查找的項
  • fromindex (可選的)表示查找起點位置的索引 
    返回 
    要查找的項在數組中的位置,或者在沒找到的情況下返回-1
  1. var data = [2, 5, 7, 3, 5];
  2. console.log(data.indexOf(5, "x")); // 1 ("x"被忽略)
  3. console.log(data.indexOf(5, "3")); // 4 (從3號位開始搜索)
  4. console.log(data.indexOf(4)); // -1 (未找到)
  5. console.log(data.indexOf("5")); // -1 (未找到,因為5 !== "5")

迭代方法

共有五個迭代方法every, filter, forEach, map, some 
每個方法的的參數是一個回調函數

迭代方法(function callback(item,index,array) {});

回調函數都是三個參數

  • item 數組的元素
  • index 元素在數組中的位置
  • array 數組對象本身 
    同時,有必要的回調函數要返回truefalse

  • every :對數組中的每一項運行給定函數,如果該函數對每一項都返回 true ,則返回 true 。相當于是每項做與操作
  • filter :對數組中的每一項運行給定函數,返回該函數會返回 true 的項組成的數組。
  • forEach :對數組中的每一項運行給定函數。這個方法沒有返回值。
  • map :對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
  • some :對數組中的每一項運行給定函數,如果該函數對任一項返回 true ,則返回 true 。相當于是每項做或操作

例如:

every

  1. let a = [1,2,3,99,34,33];
  2. let v1 = a.every((item,index,array)=>{
  3. return item > 2;
  4. });
  5. //v1的值為false 因為a[0],a[1]不合條件
  6. let v2 = a.every((item,index,array)=>{
  7. return item > 0;
  8. });
  9. //v2的值為true

filter

  1. let a = [1,2,3,99,34,33];
  2. let v = a.filter((item,index,array)=>{
  3. return item > 2;
  4. });
  5. //v是過濾后的新數組 [3,99,34,33]

foreach

  1. a.forEach((item)=>{
  2. console.log(item);
  3. });
  4. //會依次打印出每個元素的值
  5. a.forEach((item,index)=>{
  6. console.log(index,item);
  7. });
  8. //會依次打印出每個元素的下標和值

map

  1. let a = [1,2,3,99,34,33];
  2. let v = a.map((item,index,array)=>{
  3. return item * item;
  4. });
  5. //v是map后的新數組 [1,4,9,9801,1156,1089]

some

  1. let a = [1,2,3,99,34,33];
  2. let v1 = a.some((item,index,array)=>{
  3. return item > 2;
  4. });
  5. //v1的值為true 因為a[2],a[3]等元素值>2
  6. let v2 = a.some((item,index,array)=>{
  7. return item > 100;
  8. });
  9. //v2的值為false ,因為沒有元素值大于100

歸并方法


  • reduce 從左到右累加
  • reduceRight 從右到左累加

這兩個方法,都會遍歷所有數組元素 
參數是一個回調函數

歸并方法 (function callback(prev, cur, index, array){});

  • prev 前一個值
  • cur 當前元素
  • index 該元素在數組中的位置
  • array 數組對象本身

    例子

  1. let a = [1,2,3,99,34,33];
  2. let s = a.reduce((pre,cur,index,array)=>{
  3. console.log(pre,cur,index);
  4. return pre+cur;
  5. });
  6. //1 2 1t REPLServer.<anonymous> (repl.js:538:10)
  7. //3 3 2t emitOne (events.js:101:20)
  8. //6 99 3 REPLServer.emit (events.js:188:7)
  9. //105 34 4
  10. //139 33 5

數組棧方法

數組可以像棧那樣使用 
push方法,表示在數組最后加入指定的元素,可以一次增加多個數組 
pop方法,表示將數組的最后一個刪除,并通過pop方法返回,如果沒有元素了,則返回undefined

  1. a.push(100);
  2. a.push(99);
  3. console.log(a.pop());
  4. console.log(a.pop());

結果輸出 
99 
100

隊列方法

數組可以像隊列那樣使用 
用push方法,在隊尾加元素 
用shift在隊頭取元素 
用unshift在隊頭推入元素

  1. let a=[];
  2. a.push(1,2,3);
  3. Console.log(a.shift());
  4. Console.log(a.shift());
  5. Console.log(a.shift());

然后顯示為1,2,3剛好和棧相反

  1. let a = [1,2,3];
  2. a.unshift(4);
  3. a.unshift(5,6,7);

結果a為[ 5, 6, 7, 4, 1, 2, 3 ]

反轉數組方法

用reverse方法,反轉數組 
如:

  1. let a = [1,2,3,4,5];
  2. a.reverse()

結果: 
[ 5, 4, 3, 2, 1 ]

排序

用sort可以對數組排序

  1. function compare(v1,v2) {
  2. return v1>v2;
  3. }
  4. // a.sort();默認將元素用toString,再比較字符串排序
  5. let a=[2,22,222,1,11,111];
  6. let v1 = a.sort();
  7. //則v1=[1,11,111,2,22, 222]
  8. //**這是不是按數值大小來排序,是按字會串大小來的**
  9. //可以指定的比較方法a.sort(compare);
  10. //則結果如下:
  11. let v2 = a.sort(compare);
  12. //則v2 = [ 1, 2, 11, 22, 111, 222 ]

連接數組

用concat可以將一個或多數組連起來,并不會改變當前數組本身

  1. a = [1,2,3];
  2. b = a.concat(99); //b=[1,2,3,99];
  3. B = a.concat(99,[4,5]); //b=[1,2,3,99,4,5];

基于原有數組創(chuàng)建新數組

用slice基于當前數組中的一或多個項創(chuàng)建一個新數組,原數組不會變 
slice(開始下標,結束下標) ; 并不包括結束下標的那個元素

  1. let a = [1,2,3,4,5,6];
  2. b=a.slice(2,4); //b=[3,4];

強大的splice

這個方法恐怕要算是最強大的數組方法了 
splice的返回值,則操作后的元素組成的數組

刪除

可以刪除任意數量的元素,只需指定 2個參數:

  • startIndex 開始刪除的位置
  • removeCount 要刪除的元素個數。 
    例如, a.splice(0,2) 會刪除數組中的前兩元素。
  1. let a = [1,2,3,4,5,6];
  2. let b = a.splice(1,2);
  3. //執(zhí)行后,結果是
  4. //a = [ 1, 4, 5, 6 ]
  5. //b = [ 2, 3 ]

插入

可以向指定位置插入任意數量的元素,只需提供 3個參數:

  • 起始位置、
  • 0(要刪除的元素個數,做為插入功能,這值必須為0)
  • 要插入的元素
  • 如果要插入多個元素, 
    還可以繼續(xù)提供參數,表示是要插入的元素。 
    例如,
  1. let a = [1,2,3,4,5,6];
  2. let b = a.splice(1,0,91,92,93,94);
  3. //執(zhí)行后結果是
  4. //a = [ 1, 91, 92, 93, 94, 2, 3, 4, 5, 6 ]
  5. //b = [ ]

替換

可以向指定位置插入任意數量的元素,且同時刪除任意數量的元素,只需指定 3 個參數:

  • 起始位置、
  • >0的值(要刪除的元素個數,做為替換功能,這值必須大于0)
  • 要插入的元素
  • 如果要插入多個元素, 
    還可以繼續(xù)提供參數,表示是要插入的元素。
  1. let a = [1,2,3,4,5,6];
  2. let b = a.splice(1,2,91,92,93,94);
  3. //執(zhí)行后結果是
  4. //a = [ 1, 91, 92, 93, 94, 4, 5, 6 ]
  5. //b = [ 2, 3 ]

最后

對于迭代方法和歸并方法只是一個簡化代碼的作用,可能這些方法功能非常見,所以干脆默認提從了這兩組方法。對于js的數組,使用起來非常方法,相比c/c++真是無與倫比…。在C++11標準后,也可以同樣提供一個強大的動態(tài)數組。但是js的數組,可以存放任何元素,這個是C++不能比的,雖然可以實現(xiàn),但是代價就有點大了。相對來說,現(xiàn)在版本的java和C#,則可以。因為java所有的都是Object…

posted on 2017-03-07 18:03 冬瓜 閱讀(1497) 評論(0)  編輯 收藏 引用 所屬分類: javascript
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99视频+国产日韩欧美| 国产精品成人一区二区网站软件| 久久xxxx精品视频| 亚洲欧美综合网| 欧美亚洲一区在线| 久久综合九色综合欧美就去吻| 久久人人爽爽爽人久久久| 国产精品久久婷婷六月丁香| 久久免费视频网| 亚洲午夜精品一区二区三区他趣| 久久久久久亚洲精品杨幂换脸 | 亚洲一区久久久| 亚洲国产精品一区二区尤物区| 欧美一级在线亚洲天堂| 欧美亚洲专区| 老司机67194精品线观看| 久久影视精品| 欧美美女bbbb| 国产精品久久激情| 国产精品成人在线| 国产日韩在线一区二区三区| 曰本成人黄色| 一区二区激情| 久久精品国产亚洲高清剧情介绍| 欧美一区二区三区四区视频| 小辣椒精品导航| 久久青草欧美一区二区三区| 亚洲人在线视频| 欧美另类一区二区三区| 国产日韩免费| 久久琪琪电影院| 久久久久国产精品一区二区| 国产主播一区二区三区四区| 欧美一级视频精品观看| 亚洲欧美欧美一区二区三区| 国产精品乱子乱xxxx| 在线亚洲精品福利网址导航| 亚洲国产视频直播| 欧美日韩视频| 欧美在线1区| 午夜在线视频观看日韩17c| 国产精品视频一二三| 一区二区三欧美| 亚洲综合色激情五月| 国产一区二区三区不卡在线观看| 久久成人综合网| 卡一卡二国产精品| 亚洲最新合集| 久久亚洲综合网| 亚洲视频一区二区| 亚洲视频免费看| 亚洲国产cao| 一区二区三区视频在线看| 欧美在线资源| 久久裸体艺术| 亚洲一区二区三区精品动漫| 免费不卡在线观看| 黄色成人精品网站| 久久精品一本久久99精品| 亚洲手机成人高清视频| 欧美日产在线观看| 日韩一二在线观看| 91久久午夜| 欧美日韩高清在线| 亚洲特黄一级片| 在线亚洲美日韩| 国产精品一区毛片| 欧美一区二区成人| 欧美一区激情| 亚洲成人在线| 亚洲国产综合视频在线观看| 欧美黄色小视频| 一区二区三区国产盗摄| 99亚洲视频| 国产精品永久免费观看| 久久久久久国产精品mv| 久久久久久久久久久久久久一区| 禁久久精品乱码| 欧美成人一品| 欧美日韩精品在线播放| 亚洲欧美日韩综合国产aⅴ| 亚洲免费视频网站| 在线播放一区| 亚洲精品日本| 国产精品三区www17con| 老司机精品导航| 欧美日韩国产精品专区| 亚洲一区久久| 久久久国产精品亚洲一区 | 欧美日韩中文字幕综合视频| 亚洲一级黄色片| 久久精品日韩欧美| 一区二区欧美激情| 午夜一区二区三区在线观看 | 欧美日韩麻豆| 久久久97精品| 欧美日韩美女一区二区| 久久久久成人精品| 欧美成人一区二区三区片免费| 亚洲一区二区高清| 久久一本综合频道| 性色av一区二区怡红| 美女久久一区| 欧美在线www| 欧美日韩国产一区精品一区 | 亚洲视频1区| 黄色成人av网| 亚洲香蕉伊综合在人在线视看| 亚洲高清在线| 亚洲综合色视频| 一区二区三区毛片| 久久婷婷久久| 久久国产精品久久w女人spa| 欧美激情亚洲视频| 免费在线观看精品| 国产午夜亚洲精品不卡| 在线亚洲欧美视频| 一本久道久久久| 欧美va亚洲va国产综合| 久热精品视频在线| 国产午夜久久久久| 亚洲欧美精品| 香蕉久久夜色精品国产| 欧美日韩专区| 亚洲视频一区二区在线观看| 亚洲国产精品va在线看黑人动漫 | 9人人澡人人爽人人精品| 亚洲欧洲精品成人久久奇米网 | 午夜精品福利一区二区三区av| 欧美激情1区2区3区| 欧美国产日本在线| 91久久精品美女高潮| 久久久久国产精品厨房| 久久久噜噜噜久噜久久| 韩国av一区二区三区四区| 久久av红桃一区二区小说| 久久精品国产综合精品| 国产欧美日韩高清| 欧美一级电影久久| 久久不射2019中文字幕| 国产亚洲一区二区三区在线观看| 亚洲欧美日韩中文视频| 久久国产精品99精品国产| 国产日韩精品一区观看| 久久久国产精品亚洲一区 | 亚洲欧美另类在线观看| 久久福利一区| 在线播放视频一区| 欧美aⅴ99久久黑人专区| 亚洲日本欧美| 夜夜嗨av一区二区三区| 国产精品视频内| 久久精品欧美日韩| 亚洲国产精品视频一区| 亚洲一区免费观看| 激情成人中文字幕| 欧美国产成人在线| 亚洲一区二区三区视频| 老司机免费视频久久| 亚洲欧洲日产国码二区| 国产精品男人爽免费视频1| 久久国产精品99久久久久久老狼| 国产午夜精品全部视频在线播放| 欧美日韩国产美女| 亚洲全部视频| 午夜精品一区二区三区电影天堂 | 免费高清在线一区| 艳女tv在线观看国产一区| 欧美一区二区成人6969| 在线视频国产日韩| 欧美日韩免费精品| 久久gogo国模啪啪人体图| 91久久夜色精品国产九色| 久久电影一区| 在线一区欧美| 1204国产成人精品视频| 国产精品美女黄网| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产一区日韩欧美| 欧美伦理91| 久久精品成人| 亚洲图片在线| 亚洲福利小视频| 久久精品视频在线观看| 一本一道久久综合狠狠老精东影业 | 欧美与黑人午夜性猛交久久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 99国产精品99久久久久久| 国产区在线观看成人精品| 欧美久久久久免费| 久久亚洲精品伦理| 亚洲专区免费| 日韩亚洲在线观看| 欧美国产综合视频| 久久久精品日韩| 亚洲欧美日韩精品久久亚洲区| 亚洲国产精品久久久久秋霞蜜臀 | 国产欧美1区2区3区| 欧美日韩一区二区三区免费看| 久久久久久久一区|