常见数组方法:本文先介绍影响原数组的方法,若有不正确的地方还请指正
目录
1.push
函数功能:在数组的后面追加元素
函数实参:传入数据的新元素agruments
返回值:新数组的长度
//方法的调用
var res=arr.push('czh')
console.log(arr)
console.log("返回值",res)
//函数的内部实现原理 解构
Array.prototype.mypush=function(target){
obj[obj.length]=target;
obj.length++;
}
//底层原理
function arraypush(array){
if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
for(var i=0;i<arguments.length;i++){
array[array.length]=arguments[i];
}
return array.length;
}
2.pop
函数功能:删除数组最后一个元素
返回值:删除的元素
function arrayPop(array){
if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
if(arr.length<=0) return;
var item=array[array.length-1];
array.length--;
return item;
}
3.unshift
函数功能:在数组的头部增加元素
返回值:新数组的长度
function arrayUnshift(array){
if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
for(var i=array.length+arguments.length-1){
if(i>=arguments.length-1){
array[i]=array[i-(arguments-1)];
}else{
array[i]=arguments[i+1];
}
return array.length;
}
}
4.shift
函数功能:删除数组的第一个元素
返回值:被删除的元素
function arrayShift(array){
if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
var item=array[0];
for(var i=0;i<array.length;i++){
array[i]=array[i+1];
}
array.length--;
return item;
}
5.splice
函数功能:从索引index删除到结束
具有删除、插入、替换的作用 改变当前数组返回新数组
start 从哪儿开始 deleteCount 删除几个 ...item 替换的元素
返回值:被删除的元素形成的数组
function arraySplice(array,start,deleteCount,...item){
if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
var deleteArr=[];
if(start===undefined) return deleteArr;
start=~~start
if(start<0) start+array.length<0 ? 0:start+array.length;
if(start>array.length) start=array.length;
if(deleteCount===undefined) deleteCount=array.length-start;
deleteCount=~~deleteCount;
if(deleteCount<0) deleteCount=0;
//删除
for(var i=start;i<array.length;i++){
if(i<start+deleteCount){
deleteArr[deleteArr.length]=array[i];
}
array[i]=array[i+deleteCount];
}
array.length-=deleteCount>array.length-start ? array.length-start :deleteCount;
//添加
for(var j=array.length+item.length-1;j>=start;j--){
if(j>=start+item.length){
array[j]=array[j-item.length];
}else{
array[j]=item[j-start];
}
}
return deleteArr;
}
6.reverse
函数功能:反转函数 倒序改变原数组
返回值:反转后的数组
function arrayReverse(array){
if(!array||array.constructor!==Array)throw new TypeError(array+"is not a Array");
for(var i= 0;i<~~(array.length/2),i++){
var temp=array[i];
array[i]=array[array.length-i-1];
array[array.length-i-1]=temp;
}
return array;
}
7.sort
函数功能:按照字符的排序规则从小到大排序
返回值:排序后的数组
var arr=[2,5,1,7,18,1,2,9,5,3,12,11,2,13];
arr.sort(function(a,b){
return a-b//正序
//return b-a//倒叙
})
function arraySort(array,fn){
for(var i=0;i<arr.length;i++){
for(var j=0;i<arr.length-1-i;i++){
if(fn(array[j],array[j+1])>0){
var temp= arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
return array;
}