成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js中數(shù)組操作

Terry_Tai / 3081人閱讀

摘要:使用兩種方式實(shí)現(xiàn)劉備張飛關(guān)羽通過(guò)循環(huán)累加劉備張飛關(guān)羽可以把數(shù)組中的元素鏈接成字符串劉備張飛關(guān)羽將一個(gè)字符串?dāng)?shù)組的元素的順序進(jìn)行反轉(zhuǎn)。

數(shù)組API

API: Application Programming Interface,應(yīng)用程序編程接口;

js中對(duì)象提供的方法就叫做API;

instanceof
檢測(cè)一個(gè)對(duì)象是否是數(shù)組;(用來(lái)對(duì)付復(fù)雜數(shù)據(jù)類型;)
// 簡(jiǎn)單數(shù)據(jù)類型 typeof ;
A instanceof B  // A是不是B造出來(lái)的;
例:
    var arr = [1,2,3];
    console.log(arr instanceof Array); //arr屬不屬于Array類型;
Array.isArray( )
Array.isArray(參數(shù)); // 判斷參數(shù)是不是數(shù)組,返回布爾值;
例:
    var arr = [1,2,3];
    var num = 123;
    console.log(Array.isArray(arr)); //true
    console.log(Array.isArray(num)); //false
toString( )
數(shù)組.toString(); // 把數(shù)組變成字符串,去除了[],內(nèi)容用逗號(hào)鏈接;
例:
    var arr = ["aaa","bbb","ccc"];
    console.log(arr.toString());      //返回 aaa,bbb,ccc
valueOf( )
數(shù)組.valueOf();  //返回?cái)?shù)組本身;   
例:
    var arr = ["aaa","bbb","ccc"];
    console.log(arr.valueOf());      //返回?cái)?shù)組本身  ["aaa","bbb","ccc"]
數(shù)組.join(參數(shù))
數(shù)組.join(參數(shù));  // 數(shù)組中的元素可以按照參數(shù)進(jìn)行鏈接變成一個(gè)字符串;
console.log(arr.join());    //和toString()一樣用逗號(hào)鏈接
console.log(arr.join("|")); //用參數(shù)鏈接
console.log(arr.join("&")); //用參數(shù)鏈接
console.log(arr.join(" ")); //如果是空格,真的用空格鏈接
console.log(arr.join(""));  //空字符是無(wú)縫連接
數(shù)組元素的添加和刪除 push( )和pop( )
1. 數(shù)組.push() //在數(shù)組的最末尾添加元素;
2. 數(shù)組.pop()  //不需要參數(shù);在數(shù)組的最末尾刪除一項(xiàng);
例:
    var arr = [1,2,3];
    var aaa = arr.push("abc");//在數(shù)組的最末尾添加一個(gè)元素;
    console.log(arr);//元素被修改了
    console.log(aaa);//返回值是數(shù)組的長(zhǎng)度;

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

    aaa = arr.shift();//不需要參數(shù);在數(shù)組的最前面刪除一項(xiàng);
    console.log(arr);//元素被修改了
    console.log(aaa);//被刪除的那一項(xiàng)
數(shù)組元素排序 reverse( )
reverse()   //翻轉(zhuǎn)數(shù)組
例:
    var arr1 = [1,2,3,4,5];
    var aaa = arr1.reverse(); // [5,4,3,2,1]
sort( )
sort() // 數(shù)組中元素排序;(默認(rèn):從小到大)
      //  默認(rèn):按照首個(gè)字符的Unicode編碼排序;如果第一個(gè)相同那么就比較第二個(gè)...
例:        
    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 原數(shù)組被排序了(冒泡排序)
    //默認(rèn)還可以排列字母;
    var arr2 = ["c","e","d","a","b"];
    var bbb = arr2.sort();
    console.log(bbb);         // ["a", "b", "c", "d", "e"]
    console.log(bbb===arr2); // true 原數(shù)組被排序了(冒泡排序)

sort() //數(shù)值大小排序方法,需要借助回調(diào)函數(shù);
例:
      var arr = [4,5,1,13,2,7,6];
      //回調(diào)函數(shù)里面返回值如果是:參數(shù)1-參數(shù)2;升冪;   參數(shù)2-參數(shù)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;//實(shí)參:array[j]-array[j+1];
        return b-a;//實(shí)參:array[j+1]-array[j];
    });
    console.log(aaa);

    function bubbleSort(array,fn){
        //外循環(huán)控制輪數(shù),內(nèi)循環(huán)控制次數(shù),都是元素個(gè)數(shù)-1;
        for(var i=0;iarray[j+1]){//大于升冪排序;否則降冪;
                //a-b>0  和  a>b是一個(gè)意思;
                //b-a>0  和  a0){//升冪排序
//                if(array[j+1]-array[j]>0){//降冪排序
                //把兩個(gè)變量送到一個(gè)函數(shù)中;
                if(fn(array[j],array[j+1])>0){
                    var temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
        //返回?cái)?shù)組
        return array;
    }
數(shù)組元素的操作 concat( )
數(shù)組1.concat(數(shù)組2); // 鏈接兩個(gè)數(shù)組;
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( )
數(shù)組.slice(開始索引值,結(jié)束索引值);     //數(shù)組截取;
例 :
      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));            //負(fù)數(shù)是后幾個(gè);["b", "c"]
      console.log(arr.slice(3,0));            //如果前面的比后面的大,那么就是[];[]
      console.log(arr);                          //原數(shù)組不被修改;[1, 2, 3, "a", "b", "c"]
splice( )
數(shù)組.splice(開始索引值,刪除幾個(gè),替換內(nèi)容1,替換內(nèi)容2,...);  // 替換和刪除;
                                                      //改變?cè)瓟?shù)組;返回值是被刪除/替換的內(nèi)容
例:
    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);    //(刪除指定個(gè)數(shù))從索引為1的開始刪除2個(gè)
    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"));    //(刪除指定數(shù)并替換)
    console.log(arr);     // [1, 2, 3, "aaa", "bbb", "ccc", "a", "b", "c"]
//    添加
    arr.splice(3,0,"aaa","bbb","ccc");//(刪除指定個(gè)數(shù))
//
    console.log(arr);//截取或者替換之后的;   [1, 2, 3, "aaa", "bbb", "ccc", "aaa", "bbb", "ccc", "a", "b", "c"]
indexOf / lastIndexOf
數(shù)組.indexOf(元素);      // 給元素,查索引(從前往后)
數(shù)組.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;
數(shù)組迭代(遍歷) every()
對(duì)數(shù)組中每一項(xiàng)運(yùn)行回調(diào)函數(shù),如果都返回true,every返回true,
如果有一項(xiàng)返回false,則停止遍歷 every返回false;不寫默認(rèn)返回false
像保鏢失誤一次,游戲結(jié)束?。?!
例:
1.    var arr = [111,222,333,444,555];
    arr.every(function (a,b,c) {
        console.log(a);    //元素
        console.log(b);    //索引值
        console.log(c);    //數(shù)組本身;
        console.log("-----");    //數(shù)組本身;
        //數(shù)組中元素賦值:c[b] = 值;      a=有時(shí)候無(wú)法賦值;
        return true;
    });

2.  //every返回一個(gè)bool值,全部是true才是true;有一個(gè)是false,結(jié)果就是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()
//   對(duì)數(shù)組中每一項(xiàng)運(yùn)行回調(diào)函數(shù),該函數(shù)返回結(jié)果是true的項(xiàng)組成的新數(shù)組
//     新數(shù)組是有老數(shù)組中的元素組成的,return為ture的項(xiàng);
例:
    var arr = [111,222,333,444,555];
    var newArr = arr.filter(function (element, index, array) {
        //只要是奇數(shù),就組成數(shù)組;(數(shù)組中辨別元素)
        if(element%2 === 0){
            return true;
        }else{
            return false;
        }
    })

    console.log(newArr); // [222, 444]
forEach()
// 和for循環(huán)一樣;沒有返回值;
例:
    var arr = [111,222,333,444,555];
    var sum = 0;
    var aaa = arr.forEach(function (element,index,array) {
        console.log(element); // 輸出數(shù)組中的每一個(gè)元素
        console.log(index); // 數(shù)組元素對(duì)應(yīng)的索引值
        console.log(array); // 數(shù)組本身 [111, 222, 333, 444, 555]
        sum += element; //數(shù)組中元素求和;
    });
    console.log(sum); // 數(shù)組元素加起來(lái)的和
    console.log(aaa);//undefined;沒有返回值 所以返回undefined
map()
//  對(duì)數(shù)組中每一項(xiàng)運(yùn)行回調(diào)函數(shù),返回該函數(shù)的結(jié)果組成的新數(shù)組
//    return什么新數(shù)組中就有什么; 不return返回undefined; 對(duì)數(shù)組二次加工
例:
    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()
//對(duì)數(shù)組中每一項(xiàng)運(yùn)行回調(diào)函數(shù),如果該函數(shù)對(duì)某一項(xiàng)返回true,則some返回true; 像殺手,有一個(gè)成功,就勝利了?。?!
例:
    var arr = [111,222,333,444,555];
    var bool = arr.some(function (ele,i,array) {
        //判斷:數(shù)組中有3的倍數(shù)
        if(ele%3 == 0){
            return true;
        }
        return false;
    })
    alert(bool); //true ; 有一個(gè)成功就是true
數(shù)組清空
    1. arr.length = 0; // (不好,偽數(shù)組無(wú)法清空)
    2. arr.splice(0); // 偽數(shù)組沒有這個(gè)方法;
    3. arr = [];     // 可以操作偽數(shù)組; (推薦!)
// 偽數(shù)組: 就是長(zhǎng)的像數(shù)組,但是沒有數(shù)組的方法;也不能添加和刪除元素;
例: // arguments
        fn(111,222,333);
        function fn(){
            arguments.length = 0; // 無(wú)法清空 返回 [1, 2, 3]
           arguments.splice(0); // 會(huì)報(bào)錯(cuò) arguments.splice is not a function
            arguments = []; // 可以清空,返回空數(shù)組[] 
            console.log(arguments);
        }

數(shù)組案例

1.將一個(gè)字符串?dāng)?shù)組輸出為|分割的形式,比如“劉備|張飛|關(guān)羽”。使用兩種方式實(shí)現(xiàn)

       var arr = ["劉備","張飛","關(guān)羽"];
       var separator = "|";
       //通過(guò)for循環(huán)累加
       var str = arr[0];
       for(var i=1;i

2.將一個(gè)字符串?dāng)?shù)組的元素的順序進(jìn)行反轉(zhuǎn)。["a", "b", "c", "d"] -> [ "d","c","b","a"]。使用兩種種方式實(shí)現(xiàn)。提示:第i個(gè)和第length-i-1個(gè)進(jìn)行交換

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

3.工資的數(shù)組[1500, 1200, 2000, 2100, 1800],把工資超過(guò)2000的刪除

   var arr = [1500, 1200, 2000, 2100, 1800];
   //利用filter()形成一個(gè)數(shù)組;return true;組成的數(shù)組;
   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"]找到數(shù)組中每一個(gè)a出現(xiàn)的位置

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

5.編寫一個(gè)方法去掉一個(gè)數(shù)組的重復(fù)元素 (數(shù)組去重)

       var arr = ["鳴人","鳴人","佐助","佐助","小櫻","小櫻"];
   //  方法1:  思路:定義一個(gè)新數(shù)組,遍歷老數(shù)組,判斷,如果新數(shù)組里面沒有老數(shù)組的元素就添加,否則就不添加;
       var newArr = [];
       //遍歷老數(shù)組
       arr.forEach(function (ele,index,array) {
           //檢測(cè)老數(shù)組中的元素,如果新數(shù)組中存在就不添加了,不存在才添加;
           if(newArr.indexOf(ele) === -1){//不存在就添加;(去新數(shù)組中查找元素索引值,如果為-1就是沒有)
               newArr.push(ele);
           }
       });
       console.log(newArr); // ["鳴人", "佐助", "小櫻"]
       
       也可以利用ES6中的Set方法達(dá)到快速去重,一行代碼解決:
       
       [...new Set(arr)] 或者:Array.from(new Set(arr)) // ["鳴人", "佐助", "小櫻"]




文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90173.html

相關(guān)文章

  • 用好JS 原生API系列之數(shù)組

    摘要:函數(shù)的因?yàn)橐矒碛袑傩?,所以其被稱為類數(shù)組對(duì)象。方法數(shù)組的拼接,,指被拼接的對(duì)象數(shù)組,為數(shù)組。如果為負(fù),則將其視為,其中為數(shù)組的長(zhǎng)度。而提供了數(shù)組反轉(zhuǎn)和排序來(lái)對(duì)數(shù)組進(jìn)行重排序。用好原生,你的代碼將顯得干凈,有趣。 前言 最近工作做數(shù)據(jù)交互展示,常和數(shù)據(jù)打交道,而隨之而來(lái)的就是遇見后端傳來(lái)的各種各樣的數(shù)組,我需要用各式各樣的方法來(lái)變換這些數(shù)據(jù),來(lái)最好的展示這些數(shù)據(jù);很多東西久了沒用就容易忘...

    shenhualong 評(píng)論0 收藏0
  • PHP: array數(shù)組常用API

    摘要:語(yǔ)法數(shù)組刪除數(shù)組的最后一項(xiàng)語(yǔ)法數(shù)組在數(shù)組的最末添加一項(xiàng)語(yǔ)法數(shù)組刪除數(shù)組的首項(xiàng)語(yǔ)法數(shù)組在數(shù)組的首部添加一項(xiàng)案例分析 1:數(shù)組的指針操作: 語(yǔ)法:current(數(shù)組) 當(dāng)前指針指向的單元值(默認(rèn)是第零個(gè))語(yǔ)法 next(數(shù)組) 當(dāng)前指針往下移動(dòng)一幀語(yǔ)法 prev(數(shù)組) 當(dāng)前指針往前移動(dòng)一個(gè)指針語(yǔ)法 end(array) 將當(dāng)前指針移動(dòng)到最后一項(xiàng)語(yǔ)法 ...

    Cheriselalala 評(píng)論0 收藏0
  • 聊聊在javascript數(shù)組的使用

    摘要:在中,數(shù)組里可以容納容納中任何類型的值。方法大全在中數(shù)組是可修改的對(duì)象,每個(gè)數(shù)組都有著很多好用的方法,大多數(shù)我們?nèi)粘6紩?huì)常用。把元素添加到數(shù)組的頭部。利用使用下標(biāo)進(jìn)行操作。對(duì)當(dāng)前數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)返回函數(shù)結(jié)果為的項(xiàng)組成的數(shù)組。 雜談 ????數(shù)組是最簡(jiǎn)單的內(nèi)存數(shù)據(jù)結(jié)構(gòu),也是js中最常用的類型之一,整理了下我覺得應(yīng)該了解數(shù)組的相關(guān)知識(shí)。 在js中,數(shù)組里可以容納容納js中任何...

    zone 評(píng)論0 收藏0
  • 對(duì)類型化數(shù)組(Typed Array)與ArrayBuffer的理解

    摘要:類型化數(shù)組也是中新引入的。用一句話解釋類型化數(shù)組就是它是操作二進(jìn)制數(shù)據(jù)的接口。類型化數(shù)組類型化數(shù)組的應(yīng)用二進(jìn)制數(shù)據(jù)的接口主要應(yīng)用于文件,在中涉及文件處理的幾乎都可以應(yīng)用,主要是,,。 類型化數(shù)組(Typed Array)也是HTML5中新引入的API。用一句話解釋類型化數(shù)組就是:它是JS操作二進(jìn)制數(shù)據(jù)的接口。 眾所周知,直接操作二進(jìn)制數(shù)據(jù)可以使程序更為高效, 盡管JS對(duì)常規(guī)數(shù)組做了很多...

    Worktile 評(píng)論0 收藏0
  • JS學(xué)習(xí)第十天筆記 Array類型

    摘要:只有滿足才返回,否則返回。專門用于篩選出數(shù)組中符合函數(shù)判斷條件的元素組成的心數(shù)組。專門用于對(duì)原數(shù)組中每個(gè)元素執(zhí)行相同的函數(shù)對(duì)象規(guī)定的操作。并歸方法將數(shù)組從左向右迭代。 Array類型 數(shù)組的常見方法 檢測(cè)數(shù)組 如何確定當(dāng)前是一個(gè)數(shù)組,JS提供了以下幾種方式1.typeof無(wú)法檢測(cè)數(shù)組對(duì)象:typrof[]返回object2.instanceof:[]instanceof Array返回...

    Barrior 評(píng)論0 收藏0
  • js基本操作-數(shù)組去重

    摘要:基本操作數(shù)組去重?cái)?shù)組去重的方法臨時(shí)數(shù)組保存其實(shí)這里面還沒考慮到數(shù)組里面嵌套數(shù)組對(duì)象的情況把去重后的結(jié)果放在一個(gè)臨時(shí)數(shù)組中對(duì)原來(lái)數(shù)組的元素與臨時(shí)數(shù)組元素比較臨時(shí)數(shù)組中不存在這個(gè)元素的放入臨時(shí)數(shù)組。 js基本操作-數(shù)組去重 數(shù)組去重的方法 1. 臨時(shí)數(shù)組保存(其實(shí)這里面還沒考慮到數(shù)組里面嵌套數(shù)組/對(duì)象的情況) 把去重后的結(jié)果放在一個(gè)臨時(shí)數(shù)組中, 對(duì)原來(lái)數(shù)組的元素與臨時(shí)數(shù)組元素比較, 臨時(shí)...

    GeekGhc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<