我正在为类项目编写一些代码,并且遇到了以下代码的问题:
var sellEverything = function(gold)
{
console.log("You decide to buy EVERYTHING.");
var holder;
while (storeStock.length > 0)
{
console.log(storeStock);
var curItem = storeStock.pop();
console.log(curItem);
console.log("You buy a " + curItem.itemName + " for " + curItem.itemPrice + " gold.");
gold -= curItem.itemPrice;
console.log(gold + " gold remaining");
};
};
对于透视图,storeStock是一个包含6个对象的数组。 curItem变量在未定义的控制台中出现,所以甚至可以从数组中弹出对象,还是其他问题?
以下是storeStock填充的数据:
"items":
[
{"itemName":"Sword", "itemPrice":100},
{"itemName":"Bow", "itemPrice":240},
{"itemName":"Shield", "itemPrice":120},
{"itemName":"Lance", "itemPrice":300},
{"itemName":"Potion", "itemPrice":50},
{"itemName":"Gem of supreme power", "itemPrice":5},
{"itemName":"Better movie script", "itemPrice":139083882}
]
如果这是一个明显的问题,请提前抱歉。
编辑:好的,我觉得为了清晰起见,我需要显示整个代码:
var itemList =
{
"items":
[
{"itemName":"Sword", "itemPrice":100},
{"itemName":"Bow", "itemPrice":240},
{"itemName":"Shield", "itemPrice":120},
{"itemName":"Lance", "itemPrice":300},
{"itemName":"Potion", "itemPrice":50},
{"itemName":"Gem of supreme power", "itemPrice":5},
{"itemName":"Better movie script", "itemPrice":139083882}
]
};
//private class ItemStore
var ItemStore = function()
{
var storeStock = [];
//array in function
var setStockList = function(stockArray)
{
if (stockArray instanceof Array)
{
var i = stockArray.length;
for (i; i > 0; i--)
{
storeStock.push(stockArray[i]);
}
//yes, I could have just done the loop forwards, but wanted to do it this way.
storeStock.reverse();
};
};
//array out function
var getStockList = function()
{
return (storeStock);
};
var sellEverything = function(gold)
{
console.log("You decide to buy EVERYTHING.");
var holder;
while (storeStock.length > 0)
{
console.log(storeStock);
var curItem = storeStock.pop();
console.log(curItem);
console.log("You buy a " + curItem.itemName + " for " + curItem.itemPrice + " gold.");
gold -= curItem.itemPrice;
console.log(gold + " gold remaining");
};
};
return{
"setStockList": setStockList,
"sellEverything": sellEverything,
"getStockList":getStockList
};
};
另外值得注意的是我如何调用setStockList方法:
store.setStockList(itemList.items);
答案 0 :(得分:2)
var itemList = {
items:[
{itemName: "Sword", itemPrice: 100},
{itemName: "Bow", itemPrice: 240},
{itemName: "Shield", itemPrice: 120},
{itemName: "Lance", itemPrice: 300},
{itemName: "Potion", itemPrice: 50},
{itemName: "Gem of supreme power", itemPrice: 5},
{itemName: "Better movie script", itemPrice: 139083882}
]};
//private class ItemStore
var ItemStore = function()
{
var storeStock = [];
//array in function
var setStockList = function(stock)
{
if (stock instanceof Array)
{
for (var item in stock)
{
storeStock.push(stock[item]);
}
storeStock.reverse();
};
};
//array out function
var getStockList = function()
{
return storeStock;
};
var sellEverything = function(gold)
{
var holder;
console.log("You decide to buy EVERYTHING.");
while (curItem = storeStock.pop())
{
console.log(curItem);
console.log(
"You buy a " +
curItem.itemName +
" for " +
curItem.itemPrice +
" gold."
);
gold -= curItem.itemPrice;
console.log(gold + " gold remaining");
};
};
return {
setStockList: setStockList,
sellEverything: sellEverything,
getStockList: getStockList
};
};
var store = new ItemStore();
store.setStockList(itemList.items);
console.log(store.getStockList());
store.sellEverything(100000);
答案 1 :(得分:1)
看起来storeStock
是一个具有items
数组的对象。如果是这样,这应该有效:
var sellEverything = function(gold)
{
console.log("You decide to buy EVERYTHING.");
var holder;
while (storeStock.items.length > 0)
{
console.log(storeStock);
var curItem = storeStock.items.pop();
console.log(curItem);
console.log("You buy a " + curItem.itemName + " for " + curItem.itemPrice + " gold.");
gold -= curItem.itemPrice;
console.log(gold + " gold remaining");
};
};
答案 2 :(得分:0)
storeStock
是storeStock.items
是您想要的数组的对象