js系列教程1-陣列操作全解
阿新 • • 發佈:2019-02-01
全棧工程師開發手冊 (作者:欒鵬)
陣列操作全解
js變數型別
var string;
var name = "student",age=12; //underfined、null、boolean、string、number為基本數值型別。逗號一併定義初始化多個變數。基本包裝型別String、Boolean、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){ //對陣列中元素每一項進行布林運算,返回false和true。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( );