1. 程式人生 > >js系列教程1-陣列操作全解

js系列教程1-陣列操作全解

全棧工程師開發手冊 (作者:欒鵬)

陣列操作全解

js變數型別

var string;
var name = "student",age=12;            //underfined、nullbooleanstring、number為基本數值型別。逗號一併定義初始化多個變數。基本包裝型別StringBoolean、Number通過valueOf()可以獲取基本數值型別,可以實現自動裝箱和拆箱操作。

陣列的定義

var names=[];                           //定義陣列並初始化為空
names = ["小明","小紅","小剛"
]; //賦值,可以在定義時賦值 names = new Array(); //定義陣列並初始化為空 names=new Array(names.length); //陣列基類為Array,屬性length為陣列長度 names = new Array('小明','小紅','小剛'); //字串不區分單雙引號,只要配對使用就行

增刪查改

//元素增加
names[4]="小胡";                         //通過賦值,直接添加了兩項,null和“小胡”
names.unshift("小李","小蘭");             //首部新增
names.push("小李","小蘭"); //末尾新增 //元素刪除 var item = names.pop(); //刪除獲取最後一項 item=names.shift(); //刪除獲取第一項 names.splice(2,1,"小季","小明"); //刪除新增資料,修改源陣列,第一個引數表示開始刪除的位(包含),第二個引數表示要刪除的數目,後面引數表示在刪除位置處新增的元素 //元素讀取查詢 var nameitem=names[2]; //使用[]讀取陣列,這是最簡單的讀取方式
names = names.slice(-4,6); //讀取陣列段,不修改源陣列,負數表示從右向左數,-1表示末尾第一個元素,0表示首部第一個元素。只有一個引數時表示直到末尾。讀取索引包含第一個引數不包含第二個引數 names.indexOf("小明"); //查詢匹配元素的位置,沒有找到返回-1,lastindexof表示最後匹配的位置。 //陣列的拼接和字串表示 names=names.concat("小王",["小明","小黑"]); //拼接陣列,不修改源陣列,所以要賦值 var str=stringnames.join(","); //使用間隔字串連線陣列

遍歷

var boolresult = names.every(function(item,index,array){   //對陣列中元素每一項進行布林運算,返回falsetrue。every函式,全部元素返回true時返回true。some函式某一元素返回true時返回true
    return (index>2);
});
var nameresult = names.filter(function(item,index,array){   //返回陣列,filter函式獲取滿足條件的項,map函式獲取每一項計算值的集合,不改變原陣列,forEach函式等價於for語句,對每項處理
    return (index>2);
});
nameresult = names.reduce(function(prev,cur,index,array){   //reduce從前向後迭代,reduceRight從後向前迭代。
    return prev+"+"+cur;                                    //迭代從第二項開始,prev初始值為第一項,cur初始值為第二項。計算值自動傳給下一函式的prev,返回最後一次迭代產生的值
});

排序

names.reverse();                        //陣列取反
names.sort();                           //陣列排序sort(compare),引數可為排序函式,空元素將排到最後
function compare(student1,student2){    //比較函式,返回-1,0,1
    //return student1.age<student2.age?-1:(student1.age==student2.age?0:1);   //-1表示前物件小,1表示後物件小,0表示相等
    return student2.age-student1.age;  //正數自動轉化為1,負數轉化為-1
}

陣列原型
自定義陣列原型函式,實現為所有陣列新增功能

function array_max( )
{
    return Math.max.apply(Math,this);    //max取最大值,min取最小值。還有很多數學運算
}
Array.prototype.max = array_max;         //重寫陣列原型鏈
var x = new Array(1, 2, 3, 4, 5, 6);     //應用自定義原型函式
var y = x.max( );