如何重新创建数组方法?

时间:2015-11-10 19:26:19

标签: javascript arrays methods

我试图向后设计数组方法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 ;};
}

4 个答案:

答案 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()}
    }
}