手写数组的every方法
Array.prototype._myevery = function(excutor){
//参数接收一个函数,返回的是一个布尔类型的值!
var result = true;
for(var i=0;i<this.length;i++){//对数组进行for循环来遍历数组中的每个元素
if(!excutor(arr[i])){//数组的every方法接收的是一个函数,并且函数的参数是数组中的每个元素!!!!
result = false;//数组every方法的特点就是只要返回的是false,就停止遍历!
break;
}else{
continue;//数组的every方法如果符合程序员写的条件,就继续遍历
}
};
return result;//数组的every方法的返回值是一个布尔类型的值
}
var arr = [1,2,3,4];
var res = arr._myevery((ele)=>{
if(ele<5){
return true;
}else{
return false;
}
});
console.log(res);//true
手写数组的some方法
//能清楚看到他们两个区别
Array.prototype._mysome = function(excutor){
var result = false; //区别一
for(var i=0;i<this.length;i++){
if(excutor(this[i])){
result = true;//区别二
break;
}else{
continue;
}
}
return result;
}
var arr = [1,2,3,4,5,6];
let res = arr._mysome((ele)=>{
return ele>6;
});
console.log(res);
手写数组的shift函数;
//借助数组的方法;
Array.prototype._myshift = function(){
//借助API实现
var result = this[0];
this.reverse();
this.length--;
this.reverse();
return result;
}
var arr = [5,2,3,4];
var res = arr._myshift();
console.log(res,arr);//5 [2,3,4];
//借助数组方法;一行代码
Array.prototype._myshift = function(){
//借助API实现
return this.splice(0,1)[0];
}
var arr = [5,2,3,4];
var res = arr._myshift();
console.log(res,arr);
不适用API
Array.prototype._myshift = function(){
//不借助API实现
var result = this[0];
for(var i=0;i<this.length-1;i++){
this[i] = this[i+1];
};
this.length--;
return result;
}
var arr = [5,2,3,4];
var res = arr._myshift();
console.log(res,arr);// 5,[2,3,4]
Array.prototype._myshift = function(){
//不借助API实现
var [first,...args] = this;
this.length--;
for(var i=0;i<args.length;i++){
this[i] = args[i];
}
return first;
}
var arr = [5,2,3,4];
var res = arr._myshift();
console.log(res,arr);
其实不用Api就是使用for循环,如果有哪位大佬,有什么好的方法,希望不吝赐教!!
forEach()的手写
Array.prototype._myforEach = function(excutor){
for(var i=0;i<this.length;i++){
excutor(i);
}
}
unshift()方法的手写
Array.prototype._myunshift = function(x){
var arr = [x,...this];
for(var i=0;i<arr.length;i++){
this[i] = arr[i];
};
return this.length;
}
var arr = [1,2,3,4,5];
var res = arr._myunshift(0);
console.log(res,arr);
抛砖引玉,希望有其他新奇的方法的大佬,留言,感谢为教育事业做出的贡献!!!!