我试图向后设计数组方法push,pull,shift,unshift,但我似乎无法弄清楚如何构建它b)调用它。我怎么能这样做?以下是条件:
返回一个空数组对象。这个对象应该有 以下方法:push(val)将val添加到数组的末尾 pop()从结尾删除一个值并返回unshift(val)添加 val到数组的开头shift()从中删除一个值 开始并返回它,这个问题的目标是逆转 设计实际执行的数组方法并返回一个对象 有那些方法
这是我最初认为的样子。
function createArray() {
//CODE HERE
this.push = function Push(value){
if(index >= 0){
Mainarray[index++]=value;}
};
this.pop = function (){
if(index >= 0){
index--;
return Mainarray[index];
}
else{
// display message of Empty Array
console.log('Error: Item is not array');
}
};
this.unshift = function(){return ;};
}
答案 0 :(得分:2)
你可以使用原型 - 像这样:
function YourArray() {
this.arr = [];
this.index = 0;
}
YourArray.prototype.push = function( value ) {
this.arr[ this.index++ ] = value;
return this;
}
var arr = new YourArray();
arr.push('foo');
答案 1 :(得分:1)
function NewArray() {
this.array = [];
}; /* Class */
NewArray.prototype.push = function(data) {
this.array.push(data);
} /* Method */
/* You should use prototypes, because all methods will became common, and if you are created methods like this.pop = function (){} then any instance will copy this functions */
var n = new NewArray();
n.push(2);
console.log(n);
Advantages of using prototype, vs defining methods straight in the constructor?
答案 2 :(得分:1)
您可以通过在同一数组长度的位置为数组指定值来重新创建push方法。
这是推送的原型:
Array.prototype.push = function(element) {
this[this.length] = element;
};
这是针对pop方法的:
Array.prototype.pop = function() {
var key = this.stack.pop();
var prop = this.object[key];
delete this.object[key];
return prop;
};
您可以通过更改原型名称来创建自己的方法。 推送到mypush或sthing
push函数createArray的示例:
this.push = function pushValue(value) {
this.arr[this.arr.length] = value;
};
答案 3 :(得分:0)
我使用本机数组方法作为分配给返回对象中键的值。诀窍是在对象内部声明一个数组并将其用作引用。它应该通过您要查找的支票。
function createArray() {
//CODE HERE
return {
arr: [],
push: function (val) {this.arr.push(val)},
pop: function() {return this.arr.pop()},
unshift: function (val) {return this.arr.unshift(val)},
shift: function() {return this.arr.shift()}
}
}