<script type=text/javascript charset=utf-8>
/**
* 數組本身也是對象
* js中數組類似於java裏的map容器 長度可隨意改變 ,元素類型任意
*
*/
var arr = new Array();
var arr = [1,2,3,4,true ,'abc' , new Date()] ;
alert(arr.length);
arr.length = 5 ;
alert(arr.toString()); // [object object]
/**
* push 和 pop 方法
*/
var arr = [new Date(),false] ;
var result = arr.push(1,2,true); //push方法向數組中追加元素(返回值爲新數組的長度)
alert(arr);
alert(result);
var obj = arr.pop(); //從數組的尾部移除一個元素(返回值爲移除的元素)
alert(arr);
alert(obj);
/**
* shift 和 unshift 方法
*/
var arr = [1,2,3, true , new Date()];
var r1 = arr.shift(); //從頭部移除一個元素(返回移除的元素)
alert(arr);
alert(r1);
var r2 = arr.unshift(10,false); //從頭部插入多個元素(返回新數組的長度)
alert(arr);
alert(r2);
/**
* splice、slice 方法 (截取的方法)
* splice方法操作數組本身
* slice方法不操作數組本身
*
*/
// splice: 第一個參數 :起始位置
// 第二個參數 :表示截取的個數
// 第三個參數以後:表示追加的新元素個數
var arr = [1,2,3,4,5];
arr.splice(1,2,3,4,5); // 134545
alert(arr);
// slice://返回截取的內容 //截取範圍 (左閉右開區間)
var arr = [1,2,3,4,5];
var reuslt = arr.slice(2,4);
alert(reuslt); //3,4
//操作數組的方法: concat join
var arr1 = [1,2,3];
var arr2 = [true , 4 , 5];
var reuslt = arr1.concat(arr2); //合併粘連的操作(不操作數組本身)
alert(reuslt);
var result = arr1.join('-'); //在每個元素之間加入內容(不操作數組本身)
alert(arr1);
alert(result);
/**
* sort排序
* reverse倒敘
*/
var arr1 = [5,2,1,4,3];
var arr2 = [10,2,4,1,7];
arr1.sort();
arr1.reverse(); //倒敘排序 是按照集合的位置進行倒敘的
alert(arr1);
arr2.sort();
alert(arr2); // 1 10 2 4 7
function compare(value1 , value2){
if(value1 < value2){
return -1 ;
} else if(value1 > value2){
return 1 ;
} else {
return 0 ;
}
}
arr2.sort(compare);
alert(arr2);
</script>
<script type=text/javascript charset=utf-8>
var arr = [1,2,3,4,5,4,3,2,1];
//位置的方法: indexOf lastIndexOf
// 1個參數的時候表示傳值 返回索引位置(index從0開始)
var index = arr.indexOf(4);
// 2個參數的時候 第一個參數表示起始位置 第二個參數還是值
var index = arr.indexOf(4,4);
alert(index);
//他們查找數組比較的時候 '==='
// lastIndexOf
var index = arr.lastIndexOf(2);
alert(index);
//5個新加迭代的方法
//every :對於數組每一個元素進行一個函數的運行 如果都返回true 最後則返回true 如果有一個返回false最後結果則返回false
var result = arr.every(function(item , index , array){
return item > 2 ;
});
alert(result);
//filter :對於數組的每一個元素進行一個函數的運行 給定的函數去執行 把過濾後的結果返回
var result = arr.filter(function(item , index , array){
return item > 2 ;
});
alert(result);
//forEach :循環數組每一項的值 並執行一個方法
arr.forEach(function(item, index, array){
alert(item);
});
//map 對於數組的每一個元素進行一個函數的運行 可以經過函數執行完畢後 把新的結果返回
var result = arr.map(function(item, index, array){
return item*2;
});
alert(result);
//some :對於數組每一個元素進行一個函數的運行 如果有一項返回true 最後則返回true 如果每一項都返回false最後結果則返回false
var result = arr.some(function(item, index, array){
return item >=5 ;
});
alert(result);
//reduce reduceRight
//變量的起始位置不同
//前一個值 , 當前值 , 索引位置 , array
var result = arr.reduce(function(prev , cur , index , array){
return prev + cur ;
});
alert(result);
var result = arr.reduceRight(function(prev , cur , index , array){
return prev + cur ;
});
alert(result);
</script>