數(shù)組方法里push、pop、shift、unshift、join、splice分別是什么作用?
push
- 參數(shù):不限個數(shù)
- 將每個參數(shù)插入到數(shù)組的末尾
- 返回值為添加元素后數(shù)組的長度
- 例如
var arr = [1,2,3,4]
cosnole.log(arr.push(5)) //5
console.log(arr) //[1,2,3,4]
pop
- 無傳入?yún)?shù)
- 在指定數(shù)組的末尾刪除一個元素
- 返回值為指定數(shù)組后數(shù)組的長度
- 例如
var arr = [1,2,3,4]
console.log(arr.push()) //4
console.log(arr) //[1,2,3]
unshift
- 參數(shù):不限個數(shù)
- 將每個參數(shù)插入到數(shù)組的首部
- 返回值為添加元素后數(shù)組的長度
- 例如
var arr = [1,2,3,4]
console.log(arr.unshift(-1,0)) //6
console.log(arr) //[-1,0,1,2,3,4]
shift
- 無傳入?yún)?shù)
- 在指定數(shù)組的頭部刪除一個元素
- 返回值為取出的元素
- 例如
var =[1,2,3,4]
console.log(arr.shift()) //1
console.log(arr) //[2,3,4]
join
- 傳入一個字符串:將數(shù)組轉(zhuǎn)成字符串輸出,元素與元素之間插入輸入的字符串
- 如果不傳入字符串,默認以','分隔
- 返回值為一個字符串
- 例如
var arr = [1,2,3,4,5]
var str = arr.join(',')
console.log(str) //1,2,3,4,5
str = arr.join('');
console.log(str) //12345
str = arr.join('balabala')
console.log(str) //1balabala2balabala3balabala4balabala5
splice
這個方法比較神奇,可以稱之為終極神器
- 他有兩個功能,刪除和刪除
- 插入:arr.splice(index,0,insertEl)
- index為要插入元素的索引,insertEl為要插入的元素,不限個數(shù)
- 返回值是一個空數(shù)組
- 例如
var arr = [1,2,3,4,5]
console.log(arr.splice(1,0,x,y,z)) //[]
console.log(arr) //[0,1,x,y,z,2,3,4,5]
- 刪除:arr.splice(index,n)
- index為從哪里開始刪除,n為刪除元素的個數(shù)
- 返回值是刪除的數(shù)組
- 例如
var arr = [1,2,3,4,5]
console.log(arr.splice(0,3)) //[1,2,3]
console.log(arr) //[4,5]
- 我們還可以一邊刪除一邊插入
var arr = [1,2,3,4,5]
console.log(arr.splice(0,3,'x','y','z')) //[1,2,3]
console.log(arr) //['x','y','z',4,5]
用 splice函數(shù)分別實現(xiàn)push、pop、shift、unshift方法
function push (arr){
for(var i=1;i<arguments.length;i++){
arr.splice(arr.length,0,arguments[i])
}
return arr.length
}
var arr = [1,2,3,4]
console.log(push(arr,5,6,7)) //7
console.log(arr) //[1,2,3,4,5,6,7]
function pop (arr){
var last = arr[arr.length-1]
arr[arr.length-1] = undefined
arr.length --
return last
}
var arr = [1,2,3,4]
console.log(pop(arr)) //4
console.log(arr) //[1,2,3]
console.log('--------------')
function unshift(arr){
for(var i=arguments.length-1;i>0;i--){
arr.splice(0,0,arguments[i])
}
return void(0)
}
var arr = [1,2,3,4]
console.log(unshift(arr,-1,0)) //6
console.log(arr) //[-1,0,1,2,3,4]
function shift (arr){
var head = arr.splice(0,1).toString()
return head
}
console.log(shift(arr)) //1
console.log(arr) //[2,3,4]
寫一個函數(shù),操作數(shù)組,數(shù)組中的每一項變?yōu)樵瓉淼钠椒?,在原?shù)組上操作
function squareArr(arr){
for(var i=0;i<arr.length;i++){
arr[i]=Math.pow(arr[i],2)
}
return arr;
}
var arr = [2, 4, 6]
squareArr(arr)
console.log(arr) // [4, 16, 36]
寫一個函數(shù),操作數(shù)組,返回一個新數(shù)組,新數(shù)組中只包含正數(shù),原數(shù)組不變
function filterPositive(arr){
var newArr=[];
for(var i=0;i<arr.length;i++){
if(typeof arr[i] === 'number'){
if(arr[i]>0){
newArr.push(arr[i])
}
}
}
return newArr
}
var arr = [3, -1, 2, '饑人谷', true]
var newArr = filterPositive(arr)
console.log(newArr) //[3, 2]
console.log(arr) //[3, -1, 2, '饑人谷', true]