使用添加函数和删除数组中的对象

时间:2019-06-20 01:37:29

标签: javascript arrays

我无法使用push()方法来使用新的Food构造函数在我的厨房数组中创建新项目。我需要调用一个函数,该函数会将对象添加到数组中,并且我希望ID值根据数组的当前长度来计算。

我试图创建类似的功能

groceries = function ()
{ 
    pantry.push(new Food)};


    var pantry = 
    [
    egg = new Food (1, "Egg", ...)
    ...
    ...
    ];


    function Food (id, name,...)
    {
    this.id = id;
    this.name = name;
    ...
    };
    this.inquiry = function() {
        return '\n' + this.name + 
        '\n' +
    };

我可以使用浏览器和pantry.push(chicken = new Food(... arguments...);,但是我缺乏有关如何构造可使过程更整洁的功能的知识。我不确定这是否就是事实。也许我在考虑构造函数时无法做到这一点。我很新。

我希望有一种方法可以键入一个函数,该函数将使用构造函数格式化新变量,然后将其推入预制变量pantry的末尾。我希望能够在浏览器中使用此功能。

到目前为止,我遇到诸如未定义函数或语法错误之类的错误。

2 个答案:

答案 0 :(得分:0)

我认为您的意思是class而不是功能。 new仅可用于class。如下所示。

class Food {

  constructor(id, name) {
    this.id = id;
    this.name = name;
  }

  inquiry() {
    return '\n' + this.name + '\n';
  }
}

var pantry = [ new Food(1, "Egg") ];

console.log(pantry);
console.log(pantry[0].inquiry());

答案 1 :(得分:0)

这是您可以使用的另一种解决方案

class FoodStore{
constructor() {
    this.data = [];
  }
  
 add(name){
  this.data.push({id: this.data.length,name});
  }
 
 toList(){
   return this.data;
  }
 
}

var store = new FoodStore();
store.add("test");
//inquiry
console.log(store.toList()[0].name);

// All items
console.log(store.toList());