Array物件
concat() | 連線兩個或更多的陣列,並返回結果。 |
join() | 把陣列的所有元素放入一個字串。元素通過指定的分隔符進行分隔。 |
pop() | 刪除並返回陣列的最後一個元素 |
push() | 向陣列的末尾新增一個或更多元素,並返回新的長度。 |
reverse() | 顛倒陣列中元素的順序。 |
shift() | 刪除並返回陣列的第一個元素 |
slice() | 從某個已有的陣列返回選定的元素 |
sort() | 對陣列的元素進行排序 |
splice() | 刪除元素,並向陣列新增新元素。 |
toSource() | 返回該物件的原始碼。 |
toString() | 把陣列轉換為字串,並返回結果。 |
toLocaleString() | 把陣列轉換為本地陣列,並返回結果。 |
unshift() | 向陣列的開頭新增一個或更多元素,並返回新的長度。 |
valueOf() | 返回陣列物件的原始值 |
函式方法
1,forEach() (es5)
forEach,for in , for,for of的區別
let arr = [1,2,3,4,6];
arr.w = 100 //陣列的私有屬性
arr.forEach((item)=>{ //不能return,必會執行完。
console.log(item)
})
for(let val of arr){ //支援return 並且是值of陣列(不能遍歷物件)
console.log(val)
}
for(let key in arr){//key 會變成字串,包括資料的私有屬性也可以列印出來
console.log( typeof key)
}複製程式碼
2,filter() 過濾
//filter 過濾) 是否操作原陣列:不會 ; 這個方法返回結果:過濾後的新陣列 ; 回撥函式的返回結果:true,這一項放到新陣列
let aaa = arr.filter(item=>{
return item<5
})
console.log(aaa)複製程式碼
3,map() 對映
複製程式碼
//map 對映 降原有的陣列對映成一個新陣列 )不操作原陣列;返回新陣列;回撥函式中返回什麼就是什麼
// 要對映一個結果為:<li>1</li><li>2</li><li>3</li><li>4</li><li>6</li>
let map = arr.map(item=>{
return `<li>${item}</li>` //``是es6中的模板字串,遇到變數用${}取值
})
console.log(map.join(''))複製程式碼
4,some()
//some)同find一樣只不過返回的不是找到的那一項,返回的是true;也是找到後停止,找不到就是false複製程式碼
5,every()
//every)找到false後停止返回false;複製程式碼
6,reduce()
// reduce 收斂 :4個引數,返回的是疊加後的結果,原陣列不變。回撥函式返回的結果:
//prev代表的是陣列的第一項,next是陣列的第二項
//第二次的prev是undefined,next是陣列的第三項
let sum1 = arr.reduce(function (prev,next,index,item) {
console.log(arguments)
console.log(prev,next)
return 100 //本次的返回值會作為下一次的prev
})
console.log(sum1)
let sum2 = [{price:20,count:2},{price:20,count:3},{price:20,count:4}].reduce(function(prev,next){
//0+40
//40+60
//100+80
return prev+next.price*next.count
},0) //這可以指定第一次的prev是0,因為每次返回的是值所以這樣最方便
console.log(sum2)複製程式碼
7,includes()
//includes ) 返回是Boolean
let arr3 = [1,2,55,555]
console.log(arr3.includes(5))複製程式碼
8,find()
//find ) 返回找到的那一項,不會改變陣列,回撥函式中返回true表示找到了,然後停止迴圈,找不到返回undefined;
let find = arr3.find(function (item,index) {
return item.toString().indexOf(5)>-1
})
console.log(find)複製程式碼