Javascript 检索从对象数组中提取的扁平值数组,该对象数组存在于给定数组的顶级对象中

Javascript 检索从对象数组中提取的扁平值数组,该对象数组存在于给定数组的顶级对象中,javascript,object,iteration,underscore.js,data-munging,Javascript,Object,Iteration,Underscore.js,Data Munging,请随意修改标题,这对我来说很难解释和搜索 var booking = [ { x: "1", y: "2", days: [ { hours: 8 }, ] }, {...} ] var hoursBooked = [8, 2, 4, 8, 2, 8, 3, 4]; // this is what I want 所以我有一系列的“预订”对象。 在一系列“日”对象中,每个预订可以有若干天。 “Da

请随意修改标题,这对我来说很难解释和搜索

var booking = [
 {
    x: "1",
    y: "2",
    days: [
       {
           hours: 8
       },     
    ]
 },
 {...}
]

var hoursBooked = [8, 2, 4, 8, 2, 8, 3, 4]; // this is what I want
所以我有一系列的“预订”对象。 在一系列“日”对象中,每个预订可以有若干天。 “Day”对象中有一个“Hours”属性

我所要做的就是在bookings数组中循环并输出一个扁平的“小时”值数组(这样我就可以在图形中可视化)

我相信有一种很好的功能性或干净的方法来实现这一点,而不是使用一系列“for”循环

有人吗?

var预订=[
{
x:“1”,
y:“2”,
天数:[
{
小时:8
},     
{
时间:2
}
]
},
{
x:“1”,
y:“2”,
天数:[
{
小时:4
},     
]
}
]
var hoursBooked=[]
booking.forEach(b=>b.days.forEach(d=>hoursbookend.push(d.hours)))
console.log(已预订小时数)
var预订=[
{
x:“1”,
y:“2”,
天数:[
{
小时:8
},     
{
时间:2
}
]
},
{
x:“1”,
y:“2”,
天数:[
{
小时:4
},     
]
}
]
var hoursBooked=[]
booking.forEach(b=>b.days.forEach(d=>hoursbookend.push(d.hours)))
console.log(已预订小时数)

将打印

[8, 3, 5]

将打印

[8, 3, 5]

您可以使用
days
数组的值来减少
booking

var booking=[{x:1',y:2',days:[{hours:8},{hours:4},]},{x:3',y:4',days:[{hours:1},{hours:3},]},{x:3',y:4',days:[]],
预订的小时数=预订。减少((r,a)=>r.concat((a.days | |【】)。地图(d=>d.hours)),[];

控制台日志(已预订小时)
您可以使用
天数
数组的值来减少
预订

var booking=[{x:1',y:2',days:[{hours:8},{hours:4},]},{x:3',y:4',days:[{hours:1},{hours:3},]},{x:3',y:4',days:[]],
预订的小时数=预订。减少((r,a)=>r.concat((a.days | |【】)。地图(d=>d.hours)),[];

控制台日志(已预订小时)至少,你可以为这个问题添加一个经典的方法。你是指我已经尝试过的方法吗?我使用的解决方案是嵌套循环,但我在问题中指定了我不是在寻找答案,而是更实用的方法。至少,你可以在问题中添加一种经典方法。你的意思是我已经尝试过的吗?我使用的解决方案是嵌套循环,但我在问题中指定了我没有寻找答案,而是更实用的解决方案这是我的解决方案-基本上嵌套循环,我只是想知道是否有一种方便的功能方法。这是我的解决方案-基本上嵌套循环,我只是想知道是否有一种方便的函数方法。这正是我想要的-你能提供一个非低破折号/下划线的变体吗?这正是我想要的-你能提供一个非低破折号/下划线的变体吗?完美的,普通的javascript实现,并且能很好地完成工作。感谢vanilla javascript实现,并非常出色地完成了这项工作。谢谢