- 創(chuàng)建數(shù)組及修改
var a=new Array();
console.log(a);
a=new Array(3);
console.log(a);//長度為3的數(shù)組
a=new Array("abc","xyz");
console.log(a);
//同上植阴,簡單的寫法
a=Array(3);
a=Array("abc","xyz");
//更簡單的寫法
a=[];
a=[3];
a=["abc","xyz"];
console.log(a.length);//數(shù)組的長度
console.log(a[1]);//數(shù)組的第二項的值
a.length=1;//改變長度
console.log(a[1]);//undefined
a[a.length]="asd";//在最后添加一個值asd
console.log(a);//結(jié)果
a[a.length]="zxc";//再添加一個
console.log(a);//結(jié)果
a=["0","1","2"];
a[99]=99;//設(shè)置第100位為99
console.log(a.length);//長度為100
console.log(a[4]);//undefined,其他位置其實未定義
- 類型檢測
a=["qwe","asd","zxc"];
console.log(a instanceof Array);//檢測是否是數(shù)組唤蔗,但多框架的時候回有BUG
console.log(Array.isArray(a));//這方法比較好掷空,但要考慮兼容性問題润绵,IE8和比較老的瀏覽器不支持
- 轉(zhuǎn)換方法
console.log(a.toString());//qwe,asd,zxc
console.log(a.valueOf());//["qwe","asd","zxc"]
console.log(a);//["qwe","asd","zxc"]
//alert(a.toString);
//alert(a.valueOf());
//alert(a);
console.log(a.join("||"));//qwe||asd||zxc,改變了分隔符
a.length=5;
console.log(a.join("||"));//qwe||asd||zxc||||
console.log(a.toString());//qwe,asd,zxc,,
- Array棧操作
var a=[];
var length=a.push("wer","sdf");//添加兩項
console.log(length);//長度
console.log(a);//
length=a.push("w");//再添加
console.log(length);//長度
console.log(a);//
var item=a.pop();//移除最后一個
console.log(item);//移除項的值
console.log(a);//
item=a.pop();//再移除
console.log(item);//移除項的值
console.log(a);//
- Array隊列操作
a=["z","x","c"];
item=a.shift();//刪除第一項
console.log(item);//
console.log(a);//
length=a.unshift("as");//第一項前添加元素
console.log(length);//
console.log(a);//
- Array的反轉(zhuǎn)和排序
a=[1,2,3,4,5];
console.log(a.reverse());//反轉(zhuǎn),非排序
a=[1,2,3,4,10,5];
console.log(a.reverse());//5,10,4,3,2,1反轉(zhuǎn)菌瘪,非排序
console.log(a.sort());//1,10,2,3,4,5 這種就出現(xiàn)問題了逼肯,sort默認(rèn)都是按照字符來進行培訓(xùn)膜钓,10的字符比2小
//sort內(nèi)可以傳比較的方法,類似于java的覆寫
function compare(a,b){
if(a<b) return 1;
else if(a>b)return -1;
else return 0;
}
console.log(a.sort(compare));//10,5,4,3,2,1 這樣比較大小就完全自定義了
- 數(shù)組的連接與截取
a=[1,2];
console.log(a.concat(5,6,[3,4]));//[1,2,5,6,3,4]
a=[1,2,3,4,5,6];
console.log(a.slice(3));//[4,5,6] 從第四位開始截取
console.log(a.slice(3,5));//[3,4] 四到五位
console.log(a.slice(5,3));//[] 空數(shù)組
console.log(a.slice(7));//[] 截取了一個空的
- 數(shù)組的刪除插入替換
- 刪除
a=[1,2,3,4,5,6,7];
aa=a.splice(1,2);//刪除第二位醋拧,兩個元素
console.log(a);//[1,4,5,6,7] 刪除后的a
console.log(aa);//[2,3] 刪除的元素
- 插入
a=[1,2,3,4,5,6,7];
aa=a.splice(1,0,"7","8","9");// 在第二個位置 添加三個元素 慷嗜,第二個參數(shù)代表插入
console.log(a);//[1,"7","8","9",2,3,4,5,6,7] 插入后的a
console.log(aa);//[]
- 替換
a=[1,2,3,4,5,6,7];
aa=a.splice(1,1,"7","8","9");// 在第二個位置 替換三個元素 ,第二個參數(shù)代表替換
console.log(a);//[1,"7","8","9",3,4,5,6,7] 插入后的a丹壕,僅僅把2替換掉
console.log(aa);//2 洪添,被替換的元素
- 位置方法
a=[1,2,3,4,5,4,3,2,1];
console.log(a.indexOf(2));//1 在第二位上
console.log(a.indexOf(2,3));//7 從第四位開始查找2,在第八位上
console.log(a.lastIndexOf(2));//7 從后面開始查找雀费,在第八位上
console.log(a.lastIndexOf(2,3));//1 同上
console.log(a.lastIndexOf(9));//-1 沒找到返回負(fù)1
console.log(a.lastIndexOf("2"));//-1 使用嚴(yán)格等于方式 相當(dāng)于 ===
IE8及以下并不支持indexOf,可以通過如下的方式來使它支持
if (!Array.prototype.indexOf){ //如果沒有這個方法就添加比較的方法
Array.prototype.indexOf = function(elt /*, from*/){
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
- 迭代器 IE9及以上瀏覽器
- every 數(shù)組中所有的值都滿足條件返回true
a=[1,2,3,4,5];
aa=a.every(function(item,index,array){
console.log(item);//每一項的值
console.log(index);//每項的索引
console.log(array);//數(shù)組本身
return item>=1;//全部大于等于1 返回true
})
console.log(aa);//true
aa=a.every(function(item,index,array){
console.log(item);//每一項的值
console.log(index);//每項的索引
console.log(array);//數(shù)組本身
return item>2;//第一項就不大于2干奢,只執(zhí)行一遍就結(jié)束了
})
console.log(aa);//false
- some 數(shù)組中有一個條件滿足就返回true
a=[1,2,3,4,5];
aa=a.some(function(item,index,array){
return item>4;//有一個滿足 返回true
})
console.log(aa);//true
aa=a.every(function(item,index,array){
return item>6;//沒有滿足項
})
console.log(aa);//false
- filter 過濾掉不符合條件的數(shù)據(jù)項
a=[1,2,3,4,5];
aa=a.filter(function(item,index,array){
return item>3;//過濾掉不符合條件的數(shù)據(jù)項
})
console.log(aa);//[4,5]
- map 對每一個數(shù)據(jù)項操作,并返回來
a=[1,2,3,4,5];
aa=a.map(function(item,index,array){
return item*3;
})
console.log(aa);//[3,6,9,12,15]
aa=a.map(function(item,index,array){
return item>3;
})
console.log(aa);//[false,false,false,true,true]
- forEach循環(huán)每一項的值盏袄,無返回值忿峻,類似for方法
a=[1,2,3,4,5];
a.forEach(function(item,index,array){
console.log(item);
console.log(index);
console.log(array);
})
- reduce循環(huán)合并方法
a=[1,2,3,4,5];
aa=a.reduce(function(pre,cur,index,array){
console.log(pre+" "+cur+" "+index);pre是每次return返回的值或初始值,cur為第二個值和之后每一項的值
return pre+cur;
})
console.log(aa);//15相當(dāng)于把每項都加在了一起
//還有個reduceRight方法辕羽,就是從后往前處理