gpt4 book ai didi

Javascript:使用 reduce() 将频率转换为百分比?

转载 作者:行者123 更新时间:2023-11-30 09:35:59 24 4
gpt4 key购买 nike

我的代码中的一个函数接受一个数字数组,并将这些数字的第一位数字和它们在数组中出现的次数放入映射中。因此,例如,对于一个数组

[1539, 1390, 1023, 2642, 3912, 7419, 7129, 9520, 2239]

生成的 map 将是

{"1" => 3, "2" => 2, "3" => 1, "7" => 2, "9" => 1}

对于我现在正在处理的功能,我必须获取生成的 map 并将其转换为具有百分比的 map 。然而问题是,我必须使用reduce() 和map() 函数。

到目前为止,我只知道如何像以前一样实际计算物理频率,但我不知道如何使用 reduce() 将它们全部转换为百分比。到目前为止,这是我的代码:

function toPercentages(benfordMap) {
let keys = [ ...benfordMap.keys()];
let values = [ ...benfordMap.values()];

values.reduce(
(acc, currVal) => {
// do something
})

return values;
}

我对要做什么有一个一般的想法,我觉得我可以使用我用来计算频率的代码,但我不知道如何合并语法。我的频率代码如下所示:

function freqs(items) {
var Frequencies = new Map();
items.reduce(
(acc, currVal) => (
acc[currVal] = ++acc[currVal] || 1, acc
),
{}
);

for (var x in items){
Frequencies.set(x, items[x]);
}

return Frequencies;
}

我对 Javascript 太陌生了,所以我不知道我应该在 reduce() 函数中的什么地方添加百分比计算代码。谁能指出我正确的方向?

最佳答案

我不确定,我理解正确,但无论如何请检查下面的代码:

var obj = {"1": 3, "2": 2, "3": 1, "7": 2, "9": 1}

function toPercentages(obj){
let m = new Map()
const sum = Object.keys(obj).reduce( (acum, item) => {
return acum + obj[item];
}, 0);

Object.keys(obj).map( key => {
m.set(key, ((obj[key]/sum) * 100).toFixed(2));
})

return m;
}

toPercentages(obj);

关于Javascript:使用 reduce() 将频率转换为百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43598684/

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