[英]Use function argument inside reduce function : Javascript
我有一組具有以下結構的對象作為響應發送:
let sampleData = [
{ valueObj: { High: 4, Low: 5, Medium: 7 } , time: "1571372233234" , sum: 16 },
{ valueObj: { High: 5, Low: 3, Medium : 1 }, time: "1571372233234" , sum: 9},
{ time: "14354545454", sum: 0},
{ time: "14354545454", sum: 0} }
];
我需要獲取數組內每個對象中的每個鍵並從中形成一個數組。 基本上基於所有對象中存在的鍵進行分組。如果對象沒有“值”,它應該在 val1、val2、val3 中返回 0。
result = [
{ name: 'High', data: [4, 5, 0, 0] },
{ name: 'Medium', data: [5, 3, 0, 0] },
{ name: 'Low', data: [7, 1, 0, 0] }
]
只是想將一個參數傳遞給一個函數,應該在 reduce 中使用。 在這里,我傳遞了“valueObj”,應該在reduce 中使用它。 但是我無法在reduce里面引用相同的內容
我嘗試了以下方法:
let sampleData = [{ valueObj: { High: 4, Low: 5, Medium: 7 }, time: "1571372233234", sum: 16 }, { valueObj: { High: 5, Low: 3, Medium : 1 }, time: "1571372233234", sum: 9 }, { time: "14354545454", sum: 0 }, { time: "14354545454", sum: 0 }]; let keys = ['High', 'Low', 'Medium']; function formResult(sampleData, values, keys){ let grouped = sampleData.reduce((r, { values = {} } = {}) => { r.forEach(({ name, data }) => data.push(values[name] || 0)); return r; }, keys.map(name => ({ name, data: [] }))); console.log(grouped); } formResult(sampleData,"valueObj", keys)
重命名values
參數(我使用過prop
),因為它在 reduce 函數中使用。 使用具有計算屬性的解構來提取屬性並將其分配給values
:
const sampleData = [{ valueObj: { High: 4, Low: 5, Medium: 7 }, time: "1571372233234", sum: 16 }, { valueObj: { High: 5, Low: 3, Medium : 1 }, time: "1571372233234", sum: 9 }, { time: "14354545454", sum: 0 }, { time: "14354545454", sum: 0 }]; const keys = ['High', 'Low', 'Medium']; function formResult(sampleData, prop, keys){ let grouped = sampleData.reduce((r, { [prop]: values = {} } = {}) => { r.forEach(({ name, data }) => data.push(values[name] || 0)); return r; }, keys.map(name => ({ name, data: [] }))); console.log(grouped); } formResult(sampleData,"valueObj", keys);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.