Arrays 如何在对象内部映射和排列

Arrays 如何在对象内部映射和排列,arrays,javascript-objects,map-function,Arrays,Javascript Objects,Map Function,因此,这里我有一个对象,我正试图映射: var面包房={ “项目”: { “项目”:[ { “id”:“0001”, “类型”:“甜甜圈”, “名字”:“蛋糕”, “ppu”:0.55, “击球手”:{ “面糊”:[ {“id”:“1001”,“type”:“Regular”}, {“id”:“1002”,“type”:“Chocolate”}, {“id”:“1003”,“type”:“Blueberry”}, {“id”:“1004”,“type”:“魔鬼食品”} ] }, “浇头”:[ {

因此,这里我有一个对象,我正试图映射:

var面包房={
“项目”:
{
“项目”:[
{
“id”:“0001”,
“类型”:“甜甜圈”,
“名字”:“蛋糕”,
“ppu”:0.55,
“击球手”:{
“面糊”:[
{“id”:“1001”,“type”:“Regular”},
{“id”:“1002”,“type”:“Chocolate”},
{“id”:“1003”,“type”:“Blueberry”},
{“id”:“1004”,“type”:“魔鬼食品”}
]
},
“浇头”:[
{“id”:“5001”,“type”:“None”},
{“id”:“5002”,“type”:“glassed”},
{“id”:“5005”,“type”:“Sugar”},
{“id”:“5007”,“类型”:“糖粉”},
{“id”:“5006”,“type”:“巧克力洒”},
{“id”:“5003”,“type”:“Chocolate”},
{“id”:“5004”,“type”:“Maple”}
]
},
...
...
...
]
}
}
这是目标结果

var目标=[{
“id”:1,//作为int
“类型”:“甜甜圈”,
“名字”:“蛋糕”,
“ppu”:0.55,
“击球手”:“所有击球手类型作为一个字符串”,
“配料”:[],//所有配料的副本
“倒计时”:0
}];
这是我的映射函数

//创建变量bakeryArray,该变量包含Baker变量内部的实际数组
var bakeryArray=bakery.items.item
//NewVar使用bakeryArray调用了map函数
var newCakes=bakeryArray.map(mapCakes)
函数映射蛋糕(旧蛋糕){
让面糊=旧蛋糕。面糊。面糊
控制台日志(电池,“电池记录”)
var newCakesObject={
type:oldCakes.type,
名称:oldCakes.name,
ppu:oldCakes.ppu,
击球手:击球手类型,
成分:“ingridients”,
CountOfLings:“IngRedists的总数”
};
返回newCakesObject;
};
我在将
面糊
配料
灌装次数
从旧对象放入新对象时遇到问题

为了在
newcakeobject
中获得击球手,我能想到的唯一一件事是,我必须为击球手创建另一个映射函数(我将我的尝试放在下面)?然后在batters下的
mapCakes
函数中调用它?但是每次我为它创建另一个函数时,在控制台中调用
newpatterray
时,我都会收到一个错误,说它是未定义的

var newBatterArray=bakeryArray.map(mapBatters)
函数mapBatters(旧数组){
让batters=oldarray.batters.batter
log(theBatters.type,“we run”)
var新电池={
类型:theBatters.type
}
返回新电池;
}

为了更清楚地解释你的
面包店
对象,我对它进行了一些调整

var面包房={
“项目”:[
{
“id”:“0001”,
“类型”:“甜甜圈”,
“名字”:“蛋糕”,
“ppu”:0.55,
“击球手”:[
{“id”:“1001”,“type”:“Regular”},
{“id”:“1002”,“type”:“Chocolate”},
{“id”:“1003”,“type”:“Blueberry”},
{“id”:“1004”,“type”:“魔鬼食品”}
],
“浇头”:[
{“id”:“5001”,“type”:“None”},
{“id”:“5002”,“type”:“glassed”},
{“id”:“5005”,“type”:“Sugar”},
{“id”:“5007”,“类型”:“糖粉”},
{“id”:“5006”,“type”:“巧克力洒”},
{“id”:“5003”,“type”:“Chocolate”},
{“id”:“5004”,“type”:“Maple”}
]
},
{
“id”:“0002”,
“类型”:“甜甜圈”,
“名字”:“蛋糕”,
“ppu”:0.65,
“击球手”:[
{“id”:“1001”,“type”:“Regular1”},
{“id”:“1002”,“type”:“Chocolate1”},
{“id”:“1003”,“type”:“Blueberry1”},
{“id”:“1004”,“type”:“魔鬼食品1”}
],
“浇头”:[
{“id”:“5001”,“type”:“None1”},
{“id”:“5002”,“type”:“Glazed1”},
{“id”:“5005”,“type”:“Sugar1”},
{“id”:“5007”,“类型”:“糖粉1”},
{“id”:“5006”,“type”:“巧克力洒1”},
{“id”:“5003”,“type”:“Chocolate1”},
{“id”:“5004”,“type”:“Maple1”}
]
},
...
...
...
...
]
}
现在,您可以迭代每个项并构建
target
数组,如下所示

var目标=[];
//为bakery.items中的每个项目定义减速机功能
const reduceToTarget=项目=>{
var obj={};
obj.id=item.id;
obj.type=item.type;
obj.name=item.name;
obj.ppu=item.ppu;
obj.batters=“”;
item.batters.forEach(b=>obj.batters+=b.type+'|');
obj.配料=项目.配料;
目标推送(obj);
}
//现在可以调用reduceToTarget函数来获得所需的目标列表/数组
面包房。项目。forEach(还原目标);
此文件的输出如下所示

目标=[
{
id:“0001”
类型:“甜甜圈”
名称:“蛋糕”
ppu:0.55
面糊:“普通的|巧克力|蓝莓|魔鬼食品|”,
配料:[/*配料表*/]
},
{
id:“0002”
类型:“甜甜圈”
名称:“蛋糕”
ppu:0.65
面糊:“普通的|巧克力|蓝莓|魔鬼食品|”,
配料:[/*配料表*/]
}
]
注: 要获取<代码>通话次数,您只需