亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

最實用的JS數組函數整理

2024-05-06 16:41:16
字體:
來源:轉載
供稿:網友

VeVb武林網以前就給大家整理過關于JS數組相關的內容,這次我們給大家整理的是非常實用的JS數組操作技巧和寫法,學習下吧。

instanceof

檢測一個對象是否是數組;(用來對付復雜數據類型;)// 簡單數據類型 typeof ;A instanceof B // A是不是B造出來的;例:  var arr = [1,2,3];  console.log(arr instanceof Array); //arr屬不屬于Array類型;

Array.isArray( )

Array.isArray(參數); // 判斷參數是不是數組,返回布爾值;例:  var arr = [1,2,3];  var num = 123;  console.log(Array.isArray(arr)); //true  console.log(Array.isArray(num)); //false

toString( )

數組.toString(); // 把數組變成字符串,去除了[],內容用逗號鏈接;例:  var arr = ["aaa","bbb","ccc"];  console.log(arr.toString());   //返回 aaa,bbb,ccc

valueOf( )

數組.valueOf(); //返回數組本身;  例:  var arr = ["aaa","bbb","ccc"];  console.log(arr.valueOf());   //返回數組本身 ["aaa","bbb","ccc"]

數組.join(參數)

數組.join(參數); // 數組中的元素可以按照參數進行鏈接變成一個字符串;console.log(arr.join()); //和toString()一樣用逗號鏈接console.log(arr.join("|")); //用參數鏈接console.log(arr.join("&")); //用參數鏈接console.log(arr.join(" ")); //如果是空格,真的用空格鏈接console.log(arr.join("")); //空字符是無縫連接

數組元素的添加和刪除

push( )和pop( )

1. 數組.push() //在數組的最末尾添加元素;2. 數組.pop() //不需要參數;在數組的最末尾刪除一項;例:  var arr = [1,2,3];  var aaa = arr.push("abc");//在數組的最末尾添加一個元素;  console.log(arr);//元素被修改了  console.log(aaa);//返回值是數組的長度;  aaa = arr.pop();//不需要參數;在數組的最末尾刪除一項;  console.log(arr);//元素被修改了  console.log(aaa);//被刪除的那一項

unshift( )和shift( )

1. 數組.unshift() //在數組的最前面添加一個元素;2. 數組.shift() //不需要參數;在數組的最前面刪除一項;例:  var arr = [1,2,3];  aaa = arr.unshift("abc");//在數組的最前面添加一個元素;  console.log(arr);//元素被修改了  console.log(aaa);//返回值是數組的長度;  aaa = arr.shift();//不需要參數;在數組的最前面刪除一項;  console.log(arr);//元素被修改了  console.log(aaa);//被刪除的那一項

數組元素排序

reverse( )

reverse()  //翻轉數組例:  var arr1 = [1,2,3,4,5];  var aaa = arr1.reverse(); // [5,4,3,2,1]

sort( )

sort() // 數組中元素排序;(默認:從小到大)   // 默認:按照首個字符的Unicode編碼排序;如果第一個相同那么就比較第二個...例:      var arr = [4,5,1,3,2,7,6];  var aaa =arr.sort();  console.log(aaa);     // [1, 2, 3, 4, 5, 6, 7]  console.log(aaa === arr);// true 原數組被排序了(冒泡排序)  //默認還可以排列字母;  var arr2 = ["c","e","d","a","b"];  var bbb = arr2.sort();  console.log(bbb);     // ["a", "b", "c", "d", "e"]  console.log(bbb===arr2); // true 原數組被排序了(冒泡排序)sort() //數值大小排序方法,需要借助回調函數;例:   var arr = [4,5,1,13,2,7,6];   //回調函數里面返回值如果是:參數1-參數2;升冪;  參數2-參數1;降冪;   arr.sort(function (a,b) {    return a-b; //升序    //return b-a; //降序    //return b.value-a.value; //按照元素value屬性的大小排序;   });   console.log(arr); // [1, 2, 4, 5, 6, 7, 13]

sort( )底層原理

  var aaa = bubbleSort([1,12,3], function (a,b) {//    return a-b;//實參:array[j]-array[j+1];    return b-a;//實參:array[j+1]-array[j];  });  console.log(aaa);  function bubbleSort(array,fn){    //外循環控制輪數,內循環控制次數,都是元素個數-1;    for(var i=0;i<array.length-1;i++){      for(var j=0;j<array.length-1-i;j++){//次數優化,多比較一輪,少比較一次;        //滿足條件交換位置;//        if(array[j]>array[j+1]){//大于升冪排序;否則降冪;        //a-b>0 和 a>b是一個意思;        //b-a>0 和 a<b是一個意思;//        if(array[j]-array[j+1]>0){//升冪排序//        if(array[j+1]-array[j]>0){//降冪排序        //把兩個變量送到一個函數中;        if(fn(array[j],array[j+1])>0){          var temp = array[j];          array[j] = array[j+1];          array[j+1] = temp;        }      }    }    //返回數組    return array;  }

數組元素的操作

concat( )

數組1.concat(數組2); // 鏈接兩個數組;var arr1 = [1,2,3];var arr2 = ["a","b","c"];var arr3 = arr1.concat(arr2);console.log(arr3)  //  [1, 2, 3, "a", "b", "c"]

slice( )

數組.slice(開始索引值,結束索引值);   //數組截取;例 :   var arr = [1, 2, 3, "a", "b", "c"];   console.log(arr.slice(3));      //從索引值為3截取到最后;["a", "b", "c"]   console.log(arr.slice(0,3));      //包左不包右;[1, 2, 3]   console.log(arr.slice(-2));      //負數是后幾個;["b", "c"]   console.log(arr.slice(3,0));      //如果前面的比后面的大,那么就是[];[]   console.log(arr);             //原數組不被修改;[1, 2, 3, "a", "b", "c"]

splice( )

數組.splice(開始索引值,刪除幾個,替換內容1,替換內容2,...); // 替換和刪除;                           //改變原數組;返回值是被刪除/替換的內容例:  var arr = [1,2,3,4,5,6,"a", "b", "c"]  arr.splice(5);    //從索引值為3截取到最后;(刪除)  console.log(arr);   // [1, 2, 3, 4, 5]  arr.splice(1,2);  //(刪除指定個數)從索引為1的開始刪除2個  console.log(arr);  //[1, 4, 5]//替換  var arr = [1,2,3,4,5,6,"a", "b", "c"];  console.log(arr.splice(3,3,"aaa","bbb","ccc"));  //(刪除指定數并替換)  console.log(arr);   // [1, 2, 3, "aaa", "bbb", "ccc", "a", "b", "c"]//  添加  arr.splice(3,0,"aaa","bbb","ccc");//(刪除指定個數)//  console.log(arr);//截取或者替換之后的;  [1, 2, 3, "aaa", "bbb", "ccc", "aaa", "bbb", "ccc", "a", "b", "c"]

indexOf / lastIndexOf

數組.indexOf(元素);   // 給元素,查索引(從前往后)數組.lastIndexOf(元素); // 給元素,查索引(從后往前)例:  var arr = ["a","b","c","d","c","b","b"];  console.log(arr.indexOf("b"));    // 1 查到以后立刻返回  console.log(arr.lastIndexOf("b"));  // 6 找到以后立刻返回  console.log(arr.indexOf("xxx"));  // -1; 查不到就返回-1;

數組迭代(遍歷)

every()

對數組中每一項運行回調函數,如果都返回true,every返回true,如果有一項返回false,則停止遍歷 every返回false;不寫默認返回false像保鏢失誤一次,游戲結束?。?!例:1.  var arr = [111,222,333,444,555];  arr.every(function (a,b,c) {    console.log(a);  //元素    console.log(b);  //索引值    console.log(c);  //數組本身;    console.log("-----");  //數組本身;    //數組中元素賦值:c[b] = 值;   a=有時候無法賦值;    return true;  });2. //every返回一個bool值,全部是true才是true;有一個是false,結果就是false  var bool = arr.every(function (element, index, array) {    //判斷:我們定義所有元素都大于200;    //if(element > 100){    if(element > 200){      return true;    }else{      return false;    }  })  alert(bool); //false

 

filter()

//  對數組中每一項運行回調函數,該函數返回結果是true的項組成的新數組//   新數組是有老數組中的元素組成的,return為ture的項;例:  var arr = [111,222,333,444,555];  var newArr = arr.filter(function (element, index, array) {    //只要是奇數,就組成數組;(數組中辨別元素)    if(element%2 === 0){      return true;    }else{      return false;    }  })  console.log(newArr); // [222, 444]

forEach()

// 和for循環一樣;沒有返回值;例:  var arr = [111,222,333,444,555];  var sum = 0;  var aaa = arr.forEach(function (element,index,array) {    console.log(element); // 輸出數組中的每一個元素    console.log(index); // 數組元素對應的索引值    console.log(array); // 數組本身 [111, 222, 333, 444, 555]    sum += element; //數組中元素求和;  });  console.log(sum); // 數組元素加起來的和  console.log(aaa);//undefined;沒有返回值 所以返回undefined

map()

// 對數組中每一項運行回調函數,返回該函數的結果組成的新數組//  return什么新數組中就有什么; 不return返回undefined; 對數組二次加工例:  var arr = [111,222,333,444,555];  var newArr = arr.map(function (element, index, array) {    if(index == 2){      return element; // 這里return了 所以下面返回的值是333    }    return element*100; // 返回的元素值都乘上100后的值  })  console.log(newArr); // [11100, 22200, 333, 44400, 55500]

some()

//對數組中每一項運行回調函數,如果該函數對某一項返回true,則some返回true; 像殺手,有一個成功,就勝利了?。?!例:  var arr = [111,222,333,444,555];  var bool = arr.some(function (ele,i,array) {    //判斷:數組中有3的倍數    if(ele%3 == 0){      return true;    }    return false;  })  alert(bool); //true ; 有一個成功就是true

數組清空

  1. arr.length = 0; // (不好,偽數組無法清空)  2. arr.splice(0); // 偽數組沒有這個方法;  3. arr = [];   // 可以操作偽數組; (推薦!)
// 偽數組: 就是長的像數組,但是沒有數組的方法;也不能添加和刪除元素;例: // arguments    fn(111,222,333);    function fn(){      arguments.length = 0; // 無法清空 返回 [1, 2, 3]      arguments.splice(0); // 會報錯 arguments.splice is not a function      arguments = []; // 可以清空,返回空數組[]       console.log(arguments);    }

數組案例

1.將一個字符串數組輸出為|分割的形式,比如“劉備|張飛|關羽”。使用兩種方式實現

    var arr = ["劉備","張飛","關羽"];    var separator = "|";    //通過for循環累加    var str = arr[0];    for(var i=1;i<arr.length;i++){      str += separator+arr[i];    }    console.log(str); // 劉備|張飛|關羽    //join()可以把數組中的元素鏈接成字符串;    console.log(arr.join("|")); // 劉備|張飛|關羽

2.將一個字符串數組的元素的順序進行反轉。["a", "b", "c", "d"] -> [ "d","c","b","a"]。使用兩種種方式實現。提示:第i個和第length-i-1個進行交換

 // 數組.reverse() 方法      var arr = ["a", "b", "c", "d"];      console.log(arr.reverse()); // ["d", "c", "b", "a"]        // 三種:1.正向遍歷,反向添加; 2.反向遍歷,正向添加;  3.元數組元素交換位置;      for(var i=0;i<arr.length/2;i++){        var temp = arr[i];        arr[i] = arr[arr.length-1-i];        arr[arr.length-1-i] = temp;      }      console.log(arr);

3.工資的數組[1500, 1200, 2000, 2100, 1800],把工資超過2000的刪除

  var arr = [1500, 1200, 2000, 2100, 1800];  //利用filter()形成一個數組;return true;組成的數組;  var newArr = arr.filter(function (ele, i, array) {    //2000以上返回false;    if(ele<2000){      return true;    }else{      return false;    }  });  console.log(newArr); // [1500, 1200, 1800]

4.["c", "a", "z", "a", "x", "a"]找到數組中每一個a出現的位置

  var arr = ["c", "a", "z", "a", "x", "a"];  //遍歷數組(for/while/do...while)  forEach();  arr.forEach(function (ele, index, array) {    //如果元素等于“a”,那么就輸出索引值;    if("a" === ele){      console.log(index);    }  });

5.編寫一個方法去掉一個數組的重復元素 (數組去重)

    var arr = ["鳴人","鳴人","佐助","佐助","小櫻","小櫻"];  // 方法1: 思路:定義一個新數組,遍歷老數組,判斷,如果新數組里面沒有老數組的元素就添加,否則就不添加;    var newArr = [];    //遍歷老數組    arr.forEach(function (ele,index,array) {      //檢測老數組中的元素,如果新數組中存在就不添加了,不存在才添加;      if(newArr.indexOf(ele) === -1){//不存在就添加;(去新數組中查找元素索引值,如果為-1就是沒有)        newArr.push(ele);      }    });    console.log(newArr); // ["鳴人", "佐助", "小櫻"]


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久免费福利视频| 色妞一区二区三区| 色婷婷成人综合| 国产精品视频久| 国产精品久久久久久久美男| 亚洲 日韩 国产第一| 亚洲一区制服诱惑| 91精品久久久久久久久久入口| 欧日韩在线观看| 成人性生交大片免费看视频直播| 91精品国产色综合久久不卡98口| 国产精品香蕉av| 亚洲欧美日韩久久久久久| 在线丨暗呦小u女国产精品| 久久久久久com| 亚洲电影免费观看高清| 亚洲а∨天堂久久精品9966| 亚洲国产精品成人精品| 日韩精品在线观看视频| 美女少妇精品视频| 国产欧美精品va在线观看| 国产精品手机播放| 国产欧美日韩精品丝袜高跟鞋| 欧洲精品毛片网站| 亚洲福利视频专区| 精品久久久一区| 亚洲一区二区久久久| 欧美激情视频网址| 亚洲成人久久久久| 亚洲美女性生活视频| 亚洲午夜激情免费视频| 国语自产精品视频在线看| 色婷婷综合成人| 日韩av在线免费观看一区| 欧美wwwwww| 欧美成人国产va精品日本一级| 欧美在线一区二区视频| 欧美国产中文字幕| 日韩欧美国产高清91| 亚洲一区999| 中文字幕久久久av一区| 亚洲精品视频网上网址在线观看| 亚洲成色777777女色窝| 亚洲欧美一区二区激情| 久久精品国产精品亚洲| 亚洲激情中文字幕| 国产一区二区欧美日韩| 精品欧美一区二区三区| 亚洲精品欧美一区二区三区| 国产成人综合亚洲| 国产视频亚洲视频| 久久久97精品| 91精品国产91久久久久久吃药| 欧美日韩一二三四五区| 国产精品久久久久久亚洲影视| 国产日韩综合一区二区性色av| 91最新在线免费观看| 国产日韩视频在线观看| 国产狼人综合免费视频| 97色在线观看| 一本一本久久a久久精品综合小说| 伊人久久精品视频| 成人免费观看49www在线观看| 欧美一区二区视频97| 欧美国产欧美亚洲国产日韩mv天天看完整| 中文字幕亚洲图片| 日韩av色在线| 久久久久久久久久久久久久久久久久av| 国产精品揄拍500视频| 在线观看日韩av| 日韩国产高清视频在线| 欧美国产视频日韩| 91精品在线国产| 91精品国产精品| 1769国内精品视频在线播放| 欧美xxxwww| 最好看的2019年中文视频| 亚洲午夜国产成人av电影男同| 欧美成人高清视频| 久久国产精品视频| 亚洲性线免费观看视频成熟| 欧美裸身视频免费观看| 92福利视频午夜1000合集在线观看| 国产在线观看91精品一区| 久久噜噜噜精品国产亚洲综合| 国产精品揄拍500视频| 2021久久精品国产99国产精品| 午夜精品一区二区三区在线| 亚洲日本成人网| 国产在线视频91| 国产v综合ⅴ日韩v欧美大片| 久久亚洲国产精品| 亚洲欧美一区二区精品久久久| 日韩精品在线影院| 一区二区国产精品视频| 国产精品欧美激情| 国产视频亚洲视频| 欧美午夜片在线免费观看| 精品丝袜一区二区三区| 国语对白做受69| 91情侣偷在线精品国产| 成人免费观看49www在线观看| 欧美一区二区.| 国产v综合v亚洲欧美久久| 91国产精品电影| 久久久久久av| 欧美激情成人在线视频| 欧美激情国产精品| 日韩中文字幕不卡视频| 亚洲精品一区久久久久久| 日韩av片永久免费网站| 国产精品91视频| 欧美黄色成人网| 成人黄色免费看| 亚洲aaaaaa| 粉嫩av一区二区三区免费野| 亚洲自拍偷拍网址| 日韩欧美成人区| 欧美在线不卡区| 国产玖玖精品视频| 成人黄色在线免费| 亚洲精品v欧美精品v日韩精品| 欧美大全免费观看电视剧大泉洋| 亚洲成人网在线观看| 中文字幕不卡在线视频极品| 一区二区三区日韩在线| 欧美激情亚洲精品| 亚洲欧美在线看| 欧洲亚洲女同hd| 欧美精品videosex极品1| 国产成人avxxxxx在线看| 亚洲欧美日韩区| 久久久精品一区二区三区| 综合欧美国产视频二区| 欧美视频一区二区三区…| 中文字幕久精品免费视频| 色悠悠久久88| 日本韩国在线不卡| 日韩av黄色在线观看| 欧美一级片一区| 久久精品这里热有精品| 中文字幕无线精品亚洲乱码一区| 国产精品美女久久久久av超清| 日韩在线精品一区| 久久久999国产精品| 欧美性猛交xxxx富婆弯腰| 亚洲女人天堂网| 亚洲一区二区三区四区在线播放| 97在线免费观看| 国产精品免费一区豆花| 91av在线免费观看视频| 中文字幕精品—区二区| 日本韩国在线不卡| 日韩亚洲在线观看| 久久精彩免费视频| 欧美三级欧美成人高清www| 欧美激情精品久久久久| 久久久精品免费| 国产自产女人91一区在线观看| 欧美高跟鞋交xxxxxhd| 亚洲人成伊人成综合网久久久| 精品国产欧美一区二区五十路| 久久99精品久久久久久青青91| 深夜福利国产精品|