天天看點

javascript數組基礎方法

定義數組的方式

(javascript數組不越界,越界會傳回undefined)

var arr = [];
var arr = new Array();
var arr = new Array(10);//長度為10的空數組
var arr1 = [10];//數組第一位為10

           

數組常用方法

1.push,pop,shift,unshift,reverse(改變原數組)

// 數組常用的的方法
        // push在數組的最後一位添加資料;
        var arr = [1,2];
        Array.prototype.push = function(){
            for(var i = 0;i<arguments.length;i ++)
            {
                this[this.length] = arguments[i];
            }
            arr[arr.length];
            return this.length;
        } 
        // arr.pop把數組的最後一位剪切出來
        // arr.shift删除第一位資料
        //arr.unshift在數組的前面加資料
        // arr.reverse()倒叙數組
        // splice(0,2)由第零位開始切2位,留下後面的
        // splice(1,1,0,0,0)第二位以後的參數會被放到切口處
           

2.sort(改變原數組)

//arr.sort()排序:由小到大。arr.sort().reverse()降序(預設按照字元串大小排序).
//必須寫倆形參
//看傳回值1)當傳回值為負數時,那麼前面的數放在前面
//2)為正數,那麼後面的數放前面
//3)為0,不動
//解決方法
        var arr = [1,2,3,4,5,6,7,8,9,10];
        arr.sort(function (a,b) {
            // return a - b;//升序
             return b - a;//降序
        });
           

3.join,concat,split,toString,slice

//concat拼接兩個數組(不改變原數組的方法)
        arr = [1,2,3,4,5];
        arr1 = [7,8,9];
        //數組的toString把用字元串的形式展示
        // slice(從該位開始截取,截取到該位)||(一個參數表示從第幾位開始截取一直截取到最後,負數表示從倒數第幾個開始截取)
        var newArray = arr.slice(1,3);
        //join數組之間用join(“”)裡面的參數連接配接成字元串
        eg.arr.join("-")//-->"1-2-3-4-5"
        arr.split('-')//"與join互逆"

           

數組方法的應用

1.對象按年齡排序

var cheng = {
            name : 'cheng',
            age : 18,
            sex : 'male'

        }
        var deng = {
            name : 'deng',
            age : 40,
            sex : 'male'

        }
        var zhang = {
            name : 'zhang',
            age : 20,
            sex : 'male'

        }
        var arr = [zhang,deng,cheng];
        arr.sort(function(a,b){
            return a.age - b.age;//升序
            // return b.age - a.age;//降序
        });
           

2.按字元串長度排序

var arr = ['ac', 'weer', 'sfd', 'adfhg', 'q', 'seraffggd', 'safaef'];
        arr.sort(function (a, b) {
            return a.length -b.length;//升序
            // return b.length - a.length;//降序
        });
           

3.根據位元組長度排序

function retBytes(str) {
            var count = str.length;
            for (var i = 0; i < str.length; i++) {
                if (str.charCodeAt(i) > 255) {
                    count++;
                }
            }
            return count;
        }
        var arr = ['ac鄧', 'weer', 'sfd老鄧', 'adfhg', 'q', 'seraffggd', 'safaef'];
        arr.sort(function (a, b) {
            return retBytes(a) - retBytes(b);
            return retBytes(b) - retBytes(a);
        });
           

4.join的應用(連接配接字元串)

var str = 'alibabb';
        var str1 = 'baidu';
        var str2 = 'tencent';
        var str3 = 'toutiao';
        var str4 = 'wangyi';
        var str5 = 'xiaomi';
        var str6 = 'nv';
        var arr = [str,str1,str2,str3,str4,str5,str6];
        console.log(arr.join("")
 
           

類數組

//類數組(eg.arguments:像數組但是不能使用數組的方法)
        var obj = {
            '2' : 'a',
            '3' : 'b',
            '4' : 'c',
            'length' : 3,
            'push' : Array.prototype.push,
            'splice' : Array.prototype.splice
        }
 //屬性要為索引(數字)屬性,必須有length屬性,最好加上push
 //優點
        Array.prototype.push = function(target){
            this[this.length] = target;
            this.length ++;
        }