我目前正在嘗試根據當前陣列中存在的另一個陣列的 Id 對物件陣列中的某些值求和。假設我有這個陣列
const queryArray = [ "1" , "2" ]
如果 Id 的費用屬性值匹配,這是我想要求和的陣列
const services = [
{
Id: "1",
services: "Early Check-In",
fees: "7500"
},
{
Id: "2",
services: "Late Checkout",
fees: "7500"
},
{
Id: "3",
services: "Airport Chauffeur",
fees: "25000"
}
]
所以我想根據 queryArray 中可用的 Id 在這里獲取 services 陣列中的費用屬性值的總和。所以在這種情況下
[ "1" , "2" ]
應該回來
15000
如果我決定在下面使用它
[ "1" , "3" ]
它應該回傳
32500
如果也這樣做
[ "1", "2" , "3"]
它應該回傳
40000
我是 javascript 新手,所以我什至想不出任何可能的解決方案或采取的步驟。
uj5u.com熱心網友回復:
當然,filter您需要的服務 ->map為其價值提供服務 ->reduce將結果串列添加到單個數字添加元素:
const services = [
{
Id: "1",
services: "Early Check-In",
fees: "7500"
},
{
Id: "2",
services: "Late Checkout",
fees: "7500"
},
{
Id: "3",
services: "Airport Chauffeur",
fees: "25000"
}
]
const ids = ["1" , "2"]
console.log(
services
.filter(({Id}) => ids.includes(Id))
.map(({fees}) => parseFloat(fees))
.reduce((acc, fees) => acc fees, 0)
)
uj5u.com熱心網友回復:
檢查 id 是否包含在 reducer 內部的 id 陣列中:
const services = [
{
Id: "1",
services: "Early Check-In",
fees: "7500"
},
{
Id: "2",
services: "Late Checkout",
fees: "7500"
},
{
Id: "3",
services: "Airport Chauffeur",
fees: "25000"
}
]
const queryArray = [ "1" , "2" ]
const res = services.reduce((a,b) => queryArray.includes(b.Id) ? a = b.fees : a, 0)
console.log(res)
uj5u.com熱心網友回復:
您也可以使用reduce,并為每個條目檢查當前值的Id 是否在queryArray 中。如果是,則回傳當前總數加上當前費用。
將 0 設定為起始值。
const services = [{
Id: "1",
services: "Early Check-In",
fees: "7500"
},
{
Id: "2",
services: "Late Checkout",
fees: "7500"
},
{
Id: "3",
services: "Airport Chauffeur",
fees: "25000"
}
]
const queryArray = ["1", "2"]
let res = services.reduce(
(total, curr) => queryArray.includes(curr.Id) ? total parseInt(curr.fees, 10) : total,
0
);
console.log(res);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/318648.html
標籤:javascript 数组 算法
上一篇:C#泛型函式,用System.String使泛型方法失效
下一篇:如何處理不同權限的端點呼叫測驗
