es6陣列的方法
1.複習的函式
函式是由關鍵字function宣告的,他是一個引用資料型別,是Function的例項,在呼叫的時候會開闢一個私有空間
2.函式的成員
arguments:null (是實參構成的陣列集合)
caller:null(是這個函式的呼叫者,函式在A個函式內呼叫,那麼A就是這個函式的呼叫者,在window下caller是null)
案例:
function fn(){
console.log(fn.caller)
}
function f(){
fn(23,56)
}
f() (解析:fn在f函式內呼叫,那麼f就是fn的呼叫者)
length:形參的個數;
name:是函式名,只跟定義有關,不能修改
arguments 函式的實參構成的陣列集合 他下面的引數有
callee:是當前函式本身;
length:實參的個數;
用遞迴寫一個1-10的求和;
var sum=0;
function add(m){
sum=sum+m
if(m<1){
return sum
}
else{
return add(m-1)
}
var as=add(10)
arguments.callee,也可以代替遞迴(因為他指向當前函式本身)
3.函式作為引數;
1.匿名函式傳參
2.命名函式傳參,只傳命名函式的函式名,不帶(),否則傳的是return 返回值;
4.陣列的方法
sort(function(a,b){
return a-b
}) 僅僅是對數字的從小到大排序;
還有一種全能的方法,可以對任何東西排序;
function getsort(a,b){
if(a>b){
return 1
}
else if(a==b){
return 0;
}
else{
return -1
}
這是從小到大排序,如果從大到小排序 1和-1;換下位置;
跟資料型別一些方法:
1.檢測資料型別 typeof 這是一個檢測的方法;
2.instanceof 這是一個判斷的方法,返回值true和false;
3.Object.prototype.toString() 返回的是以字串"[object Object]" 第一個引數:是物件資料型別 ;第二個引數:具體是那種資料型別;這種寫法得不到具體的第二個引數;
所以需要在後面加.call() Object.prototype.toString.call() 這種寫法是完美的;
es6新增陣列的方法;
之前的方法:1.concat() 2.push() 3.sort() 4.toString() 5.splice() 6.unshift() 7.reverse() 8.pop() 9.join() 10.shift() 11.indexOf() 12.slice()
es6新增的方法:
以 var arr=[12,65,47,13,10,13]為例;
1.every() 用於檢測陣列中每個元素是否都滿足某個條件,返回值是true和false;
案例:
var as=arr.every(function(value){
return value>=18
})
console.log(as)
2.filter() 用於檢測陣列中某個元素是否都滿足某個條件,返回滿足條件所有元素構成的新陣列;
案例:
var as=arr.filter(function(value){
return value>12
})
console.log(as)
3.find() 用於檢測陣列中第一個滿足條件的元素,並返回;
案例:
var a=arr.find(function(va){
return va>18
})
console.log(a)
4.forEach() 用於對陣列進行遍歷;
案例:
arr.forEach(function(value){
console.log(value)
})
5.Map() 用於對陣列進行遍歷,將每個元素都傳入到回撥函式中加工,並返回新的結果,最後得到的是元素加工後組成的新陣列;
案例:
var as=arr.map(function(va){
return va+10;
})
console.log(as)
由於這是es6新的方法,所以有的編輯器會報錯,可以不用管他,最新的瀏覽器已經可以識別這個方法了