如何为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);
我们如何做流行音乐?
提前致谢
答案 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
}
}