上一次咱們簡單的介紹了Object() String() Number() Boolean()
而今天這個博客我在原來的基礎上對Array() Function()
進行了補充.獲取更多相關的知識還能夠經過 阮一峯標準參考教程 MDN-JavaScript標準庫 javascript
第一種:(1)let fruit = new Array("apple","orange","banana")
第二種:(2)let fruit = ["apple","orange","banana"]
java
而當數組的參數爲1個的時候,例如var a = Array (3)
時就要思考一下:
第(1)種可能生成了一個數組,第一個數爲3
第(2)種可能生成了一個length爲3的數組
數組
(1):var f = function(a,b){ return a + b ;}
(2):var f = Function(){'a' , 'b' , 'return a + b'} //加不加new都同樣
上述兩種方式都是表達了兩種用於計算a+b的值。第一種主要介紹了通常函數的表達方式,第二種主要介紹了構造函數的表達方式,前面的'a'
,'b'
表示參數,'return a+b'表示函數體
bash
(1)具名函數 function f(){ return undefined; //若是沒有寫,默認添加 }
(2)匿名函數 function(){ }
(3)構造函數 new Function('x','y','return x+y')
app
Array.prototype
的內容咱們稱之爲僞數組,也就是說僞數組沒有push,pop,__proto__功能
a = ['a','b','c']
a.forEach( function(x,y)){
console('value',x)
console('key',y)
}
複製代碼
很明顯上面的代碼先執行
console.log('我接收到了一個函數')
而後會找
y()
,發現
y()
對應的
function()
是
console.log(2)
返回的是2,接着執行最後一句函數
console.log('而且我執行了這個函數')
y.call()
同樣也是能夠執行函數:
function forEach(array , x){
for(let i = 0; i<array.length;i++){
x(array[i],i)
}
}
forEach(['a','b','c'] , function(value, key){
console.log(value , key)
}
)
// a 0
b 1
c 2
複製代碼
經過forEach來解釋:函數
var a = ['a','b','c'];
a.forEach(function(x,y){
console.log(x,y)
})
// a 0
b 1
c 2
其實a.forEach()自己就是一個函數,當你寫a.forEach(function(){})等價於a.forEach.call(a , function(){})
複製代碼
經過上述的簡單理解咱們能夠知道forEach主要是用來遍歷數組,並且forEach()必定會接受三個參數:第一個參數必定是value,第二個參數必定是key,第三個參數必定是這個數組的自己 eg:ui
var a = ['aaa' , 'bbb' , 'ccc']
a.forEach(function(b,c,d){
console.log(b,c,d)
})
// aaa 0 ['aaa' , 'bbb' , 'ccc']
bbb 1 ['aaa' , 'bbb' , 'ccc']
ccc 2 ['aaa' , 'bbb' , 'ccc']
複製代碼
sort()對數組進行排序 默認狀況下是進行從小到大排序
a = [2,4,5,6,7,1,3]
a.sort()
//a = [1,2,3,4,5,6,7]
複製代碼
若是想進行從大到小排序要進行設置:
a = [2,4,6,7,3,1,5]
a.sort( function(x,y) {return x- y}) //返回的數字是負數,進行從小到大排序
a.sort( function(x,y) {return y- x}) //返回的數字是正數,進行從大到小排序
複製代碼
對於更復雜(姓名)的順序排列:spa
var people = ['阿里','百度','騰訊']
var money = {
百度:3,
阿里:1,
騰訊:2
}
people.sort( function(x,y){return money[x] -money[y] }) //阿里,騰訊,百度
people.sort( function(x,y){return money[y] -money[x] }) //百度,騰訊,阿里
複製代碼
join(),contact(),map(),filter(),reduce() join()至關於鏈接符 eg:prototype
var a = [1,2,3]
a.join('你好')
//1你好2你好3
複製代碼
數組變字符串 var a = [1,2,3] a.join(',') // "1,2,3"
contact()數組的鏈接3d
var a = [1,2,3]
var b =[4,5,6]
var c = a.contact(b) var c =a.contact([]) //獲得一個新數組
//c [1,2,3,4,5,6]
複製代碼
map()把函數返回的每個值收集起來獲得一個新的數組
var a = [1,2,3]
a.map( function(value , key){return value*2}) //2,4,6
a.map(value =>value *2) //2,4,6
a.map(value =>value *3) //3,6,9
複製代碼
上述兩種結果實現方法一致。箭頭函數更簡潔,function()更加讓人容易理解
filter()過濾數組中的內容
經過數組中的具體內容進行篩選,和map()類型也有兩種方式進行,一種是傳統的函數,一種是箭頭函數
var a = [1,2,3,4,5,6,7,8,9]
a.filter(value =>value%2===0).map(value =>value*value)
//4,16,36,64
複製代碼
reduce()減小數組或者壓縮數組
var a =[1,2,3,4,5,6,7,8,9]
a.reduce(function(sum,n){
return sum+n
},0) //sum表示上一次結果的和,n是一次的值,sum+n是相加的結果,0是初始的值
複製代碼