Javascript 将项目数组推入Store数组,该数组位于StoreType数组下

Javascript 将项目数组推入Store数组,该数组位于StoreType数组下,javascript,arrays,Javascript,Arrays,开发一个JS文件,为棋盘游戏生成商店和物品 每个商店类型都有一个数组,例如,有一个名为BeerStores的数组。在BeerStores数组中有6家店铺,每个店铺都有一个店名和StoreWealth。其创建如下所示: var beerStoreArray=businessCount(“啤酒店”,5100200); 函数businessCount(存储类型、numStores、最小值、最大值){ var-businessCount=[]; var x=numStores; 如果(x==0){ 回来

开发一个JS文件,为棋盘游戏生成商店和物品

每个商店类型都有一个数组,例如,有一个名为BeerStores的数组。在BeerStores数组中有6家店铺,每个店铺都有一个店名和StoreWealth。其创建如下所示:

var beerStoreArray=businessCount(“啤酒店”,5100200);
函数businessCount(存储类型、numStores、最小值、最大值){
var-businessCount=[];
var x=numStores;
如果(x==0){
回来
}否则{
而(numStores>0){
var storeWealth=Math.round(randomIntFromRange(最小,最大));
var storeName=storeType+“”+numStores;
businessCount.push({
店名,
商店财富
});
新店--;
}
返回业务计数;
}
}
console.log(beerStoreArray);
这非常有效,并按预期在控制台中输出以下内容:

> 0: {storeName: "Beer Store 5", storeWealth: 140}
> 1: {storeName: "Beer Store 4", storeWealth: 193}
等等

问题:

现在我想在每家商店里添加商品(如淡啤酒),我有点迷路了。是否有一种方法可以遍历beerStoreArray中的每个商店,并在其下添加itemName和itemPrice?这样它就可以这样输出:

> 0: {storeName: "Beer Store 5", storeWealth: 140 {
    0: {itemName: "Light Beer", price: 10}
    1: {itemName: "Heavy Beer", Price: 12}
    }
> 1: {storeName: "Beer Store 4", storeWealth: 140 {
    0: {itemName: "Light Beer", price: 10}
    1: {itemName: "Heavy Beer", Price: 12}
    }
等等

谢谢你的帮助,我一直在这一部分,努力寻找相关的例子


编辑:修复代码,使其运行。请注意,我实际上并不需要它来输出,这只是我解释如何构建它的最简单方法。为这一混乱道歉。本质上,beerStoreArray包含多个商店(值为storeName和storeWealth)。我现在尝试在每个商店下添加多个项目(值为itemName和itemPrice)。稍后我将列出它(通过document.write)。

您预期的输出不是有效的
json
对象
json
只包含键值对

你不能把它推到一个物体上。我建议您添加一个名为
storeItems
的新字段

storeItems: {
    0: {itemName: "Light Beer", price: 10}
    1: {itemName: "Heavy Beer", Price: 12}
}
要将其推入阵列,可以执行以下操作

arr[0].storeItems = {
    0: {itemName: "Light Beer", price: 10}
    1: {itemName: "Heavy Beer", Price: 12}
} // likewose for other elements
示例对象:

0: {storeName: "Beer Store 5", storeWealth: 140, storeItems: {
    0: {itemName: "Light Beer", price: 10}
    1: {itemName: "Heavy Beer", Price: 12}
    }

我想你要找的是这样的对象结构

[
   {
     store_name : "BeerStore",
     store_wealth : 123,
     items : [
        {
          item_name : "Some beer",
          item_price : 20
        }
     ]
   },
   ....
]
var stores = [
   {item_name : "Beer Store", store_wealth : 123, items : []},
   {item_name : "Store 1", store_wealth : 0, items : []},
]

var item_one = {item_name : "Some beer", price 20}
var item_one = {item_name : "Some beer #2", price 30}

stores[0].push(item_one);
stores[1].push(item_two);
这可以通过这样做来实现

[
   {
     store_name : "BeerStore",
     store_wealth : 123,
     items : [
        {
          item_name : "Some beer",
          item_price : 20
        }
     ]
   },
   ....
]
var stores = [
   {item_name : "Beer Store", store_wealth : 123, items : []},
   {item_name : "Store 1", store_wealth : 0, items : []},
]

var item_one = {item_name : "Some beer", price 20}
var item_one = {item_name : "Some beer #2", price 30}

stores[0].push(item_one);
stores[1].push(item_two);
首先迭代beerStoreArray,并在每个商店中,在items属性下不断推送itemName和price

beerStoreArray.forEach(function (store) {
    store['items'] = [];
    store['items'].push({itemName: "Light Beer", price: 10});
    store['items'].push({itemName: "Heavy Beer", Price: 12})
});

对于使用有效代码难以解释的问题,它确实很有帮助。您想要的输出不是有效的Javascript,因此很难知道什么是对象,什么是数组。(即,
storeWealth:140{…
属性storeWealth是否指向数字、对象或数组???)您能否以一种不会出现语法错误的方式编写此属性?对于策略,当我提到输出时,我指的是当我只执行
console.log(beerStoreArray)时
。我实际上不需要它来输出,它只是让我更容易查看。