用于array.push和pop的Javascript自定义函数

时间:2013-06-10 10:07:28

标签: javascript arrays

如何为JS数组函数push,pop和shift创建自定义函数?

推送我们可以做到这一点

var arr = [1,2,3];
Array.prototype.push = function(val){
    var len = this.length;
    this[len] = val;
    return arr;
}
arr.push(5);

我们如何做流行音乐?

提前致谢

2 个答案:

答案 0 :(得分:3)

好吧,您可以通过更改其原型来更改所有阵列的推送功能的行为:

js> Array.prototype.push = function() { print('\\_o< quack!'); }
(function () {print("\\_o< quack!");})
js> [].push(1)
\_o< quack!

或者你可以为给定的实例更改它:

js> a = []
[]
js> a.push = function() { print('\\_o< quack!'); }
(function () {print("\\_o< quack!");})
js> b = []
[]
js> a.push(1)
\_o< quack!
js> b.push(1)
1
js> print(b);
1

同样适用于其他方法。

要实现自己的pop()方法,通用算法将是:

js> Array.prototype.pop = function() { var ret = this[this.length-1]; this.splice(this.length, 1); return ret }

但是使用splice(),实际上可以使它变得更简单:

js> Array.prototype.pop = function() { return this.splice(this.length-1, 1)[0]; }

可以采取相同的方法进行转变:

js> Array.prototype.shift = function() { var ret = this[0]; this.splice(0, 1); return ret }
js> Array.prototype.shift = function() { return this.splice(0, 1)[0]; }

答案 1 :(得分:0)

var Mainarray=new Array();
var index=0;

    function Push(value){
     Mainarray[index++]=value;
   }
   function Pop(){
     if(index>0){
       index--;
       return Mainarray[index];
     }
      else{
         // display message of Empty Array
       }
   }