繁体   English   中英

JavaScript基础:数组

[英]JavaScript basics: array or arrays

我正在尝试学习JavaScript,并且正在通过一个练习来创建一个包含食物,数量和成本的购物清单。 我似乎无法传递多个变量或创建数组数组。 我尝试了其他一些选项,例如“新对象”,但是我什么都做不到。 给我点暗示?

var groceryList = function(food, quantity, price) {
  var theItem = [food, quantity, price]
  var theList = new Array();
  theList.push(theItem)

}


myList = new groceryList("cookie", 2, 1.00)
console.log(myList)

用这个

var groceryList = function(food, quantity, price) {
  var theItem = [food, quantity, price]
  var theList = new Array();
  theList.push(theItem);

  return theList;
}

myList = new groceryList("cookie", 2, 1.00)
console.log(myList)

如果要使用对象,则需要稍微改变一下思路。 使用new创建对象时,将调用构造函数。

function GroceryList(food, quantity, price) {
    this.food = food;
    this.quantity = quantity;
    this.price = price;
}
GroceryList.prototype.toString = function() {
  return this.food + (this.quantity).toString() + (this.price).toString();
}

// lazy array syntax
var GroceryListPool = [];


// popular the array list pool
var list1 = new GroceryList("Butter", 2, 3.999);


GroceryListPool.push(list1);

要迭代GroceryListPool数组:

for(var i = 0; i < GroceryListPool.length; i++) {
    var list = GroceryListPool[i];
    // list is an object of type GroceryList
    // technically it is not a "type", but you know what I mean.
    alert(list);
}

甚至还不是真正的构造函数。 看一下这个。

function groceryList(food, quantity, price){
  this.items = {};
  if(food !== undefined){
    this.items[food] = {quantity:quantity, price:price, total:quantity*price};
  }
  this.addItem = function(food, quantity, price){
    this.items[food] = {quantity:quantity, price:price, total:quantity*price};
  }
  this.getFood(food){
    return this.items[food];
  }
  this.getQuantity = function(food){
    return this.items[food].quantity;
  }
  this.getTotal = function(food){
    return this.items[food].total;
  }
  this.getItemsByPrice(low, high){
    var r = {}, t = this.items;
    for(var i in t){
      var f = t[i], p = f.price;
      if(p >= low && p <= high){
        r[i] = f;
      }
    }
    return r;
  }
}
var groc = new groceryList('potato', 4, 0.89);
groc.addItem('orange', 10, 1);
console.log(groc.getQuantity('potato'));
console.log(groc.getTotal('orange'));
console.log(groc.getFood('orange').price);
// same as
console.log(groc.getPrice('orange'));
// or
console.log(groc.items.orange.price);
groc.addItem('pear', 200, 0.75);
console.log(groc.getItemsByPrice(0.25, 0.99)); // should be Object with 'potato' and 'pear'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM