簡體   English   中英

Javascript 過濾數組中的對象並返回數組中 Object 中 Object 的屬性

[英]Javascript Filter Objects in Array and return Property of Object in Array of Object in Array

我試圖過濾這個數組:

var Zimmer = [{"Name":"F02A","Group":"Office","Devices":[
    {"Name":"F02A-1313.01","Device":"00265BE98E8C53","Type":"HmIP-WTH-B"},
    {"Name":"F02A-1315.03","Device":"00201BE9A13271","Type":"HmIP-eTRV-B"},
    {"Name":"F02A-1354.01","Device":"00119A499C1313","Type":"HmIP-eTRV-C"}
]},
{"Name":"F1","Group":"Office","Devices":[
    {"Name":"F1-1315.04","Device":"00201BE9A1381B","Type":"HmIP-eTRV-B"}
]},
{"Name":"F2","Group":"Klassenzimmer","Devices":[
    {"Name":"F2-1315.02","Device":"00201BE9A137E5","Type":"HmIP-eTRV-B"}
]},
{"Name":"F6","Group":"Office","Devices":[
    {"Name":"F6-1315.01","Device":"00201BE9A13290","Type":"HmIP-eTRV-B"}
]}]

我想 output 每個設備名稱為 F02A。 例如:00265BE98E8C53 和第二個 output 00201BE9A13271。

為此,我編寫了代碼

msg.payload = Zimmer.forEach(element => element.filter(name => name.Name = "F02A"));

有人可以幫忙嗎?

您可以使用Array#flatMap並檢查名稱是否以所需部分開頭。

 const zimmer = [{ Name: "F02A", Group: "Office", Devices: [{ Name: "F02A-1313.01", Device: "00265BE98E8C53", Type: "HmIP-WTH-B" }, { Name: "F02A-1315.03", Device: "00201BE9A13271", Type: "HmIP-eTRV-B" }, { Name: "F02A-1354.01", Device: "00119A499C1313", Type: "HmIP-eTRV-C" }] }, { Name: "F1", Group: "Office", Devices: [{ Name: "F1-1315.04", Device: "00201BE9A1381B", Type: "HmIP-eTRV-B" }] }, { Name: "F2", Group: "Klassenzimmer", Devices: [{ Name: "F2-1315.02", Device: "00201BE9A137E5", Type: "HmIP-eTRV-B" }] }, { Name: "F6", Group: "Office", Devices: [{ Name: "F6-1315.01", Device: "00201BE9A13290", Type: "HmIP-eTRV-B" }] }], result = zimmer.flatMap(({ Devices }) => Devices.flatMap(({ Name, Device }) => Name.startsWith('F02A')? Device: []) ); console.log(result);

使用reduce方法循環遍歷您的數組,然后檢查條件(檢查“名稱”是否匹配)每個數組,如果您的條件匹配,則使用map使您的設備排列,然后連接到 output

Zimmer.reduce((acc,data)=>{
    if(data.Name === "F02A"){
        acc = acc.concat(data.Devices.map((device)=>device.Device))
    }
    return acc
},[])

// output: ["00265BE98E8C53", "00201BE9A13271", "00119A499C1313"]

暫無
暫無

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

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