簡體   English   中英

檢索取自存在於頂層對象中的對象數組的值的展平數組

[英]Retrieve a flattened array of values taken from an object array that exists within a top-level object of which I am given an array

請隨時修改標題,這對我來說很難解釋和搜索。

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

var hoursBooked = [8, 2, 4, 8, 2, 8, 3, 4]; // this is what I want

因此,我有一個“預訂”對象數組。 每個“預訂”可以在“天”對象的數組中有很多天。 在“天”對象中包含“小時”屬性。

我要做的-遍歷bookings數組並輸出一個“ Hours”值的扁平數組(這樣我就可以在圖中可視化)。

我確信有一種不錯的功能或其他方法可以做到這一點,而不是使用一系列的“ for”循環。

任何人?

Lodash 4倍

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


_(booking).map('days').flatten().map('hours').value();

將打印

[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: [] }], hoursBooked = booking.reduce((r, a) => r.concat((a.days || []).map(d => d.hours)), []); console.log(hoursBooked); 

 var booking = [ { x: "1", y: "2", days: [ { hours: 8 }, { hours: 2 } ] }, { x: "1", y: "2", days: [ { hours: 4 }, ] } ] var hoursBooked = [] booking.forEach(b=>b.days.forEach(d=>hoursBooked.push(d.hours))) console.log(hoursBooked) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM