数组部分算法重构

1.Every

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array.prototype.myEvery = function(handler){
var flag = true;

for(var i = 0; i < this.length; i ++){
var result = handler(this[i],i,this);

if(result){
continue;
}else{
flag = false;
break;
}
}

return flag;
}

2.Some

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Array.prototype.mySome = function(handler){
var flag = false;

for(var i = 0; i < this.length; i ++){
var result = handler(this[i],i,this);

if(!result){
continue;
}else{
flag = true;
break;
}
}

return flag;
}

3.foreach

1
2
3
4
5
6
Array.prototye.myForEach = function(handler){

for(var i = 0; i < this.length; i ++){
handler(this[i],i,this);
}
}

4.filter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array.prototype.myFilter = function(handler){
var arr = [];
var flag = 0;

for(var i = 0; i < this.length; i ++){

var result = handler(this[i],i,this);

if(result){
arr[flag] = this[i];
flag ++;
}else{
continue;
}
}

return arr;
}

5.map

1
2
3
4
5
6
7
8
9
Array.prototype.myMap = function(handler){
var arr = [];

for(var i = 0; i < this.length; i ++){
arr[i] = handler(this[i],i,this);
}

return arr;
}

6.sort(加函数版)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Array.prototype.mySort = function(handler){

for(var i = 0; i < this.length - 1; i ++){
for(var j = i + 1; j < this.length; j ++){

var result = handler(result[i],result[j]);

if(result < 0){
result = 0;
}

if(result){
var temp;
temp = this[i];
this[i] = this[j];
this[j] = temp;
}else{
continue;
}
}
}
}

7.pop

1
2
3
4
5
Array.prototype.myPop = function(){
var item = this[this.length - 1];
this.length --;
return item;
}

8.push

1
2
3
4
5
6
7
8
9
10
Array.prototye.myPush = function(){
var len = this.length;

for(var key in arguments){
var item = arguments[key];
this[len + (+key)] = item;
}

return this.length;
}

9.shift

1
2
3
4
5
6
7
8
9
10
11
12
Array.prototype.myShift = function(){

var item = result[0];

for(var i = 0; i < this.length - 1; i ++){
arr[i] = arr[i + 1];
}

this.length --;

return item;
}

10.unshift

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Array.prototype.myUnshift = function(){

var arr = [];
var len = this.length;
var arg = arguments.length;
var arr.length = len + arg;

for(var i = arr.length - 1; i > arg - 1; i --){
arr[i] = this[i - arg];
}

for(var key in arguments){
var item = arguments[key];
arr[key] = item;
}

this.length = arg + len;

for(var i = 0; i < this.length; i ++){
this[i] = arr[i];
}

return this.length;
}