gpt4 book ai didi

javascript - 在 reduce 函数 : Javascript 中使用函数参数

转载 作者:行者123 更新时间:2023-12-04 10:56:57 25 4
gpt4 key购买 nike

我有一组具有以下结构的对象作为响应发送:


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 param (我使用过 prop ),因为它用于 reduce 函数。使用 destructuring with computed properties提取属性并将其分配给 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);

关于javascript - 在 reduce 函数 : Javascript 中使用函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59108158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com