Javascript:使用 reduce() 将频率转换为百分比?
Javascript: Converting frequencies to percentages using reduce()?
我的代码中的一个函数接受一个数字数组,并将这些数字的第一位数字和它们在数组中出现的次数放入映射中。例如,对于
的数组
[1539, 1390, 1023, 2642, 3912, 7419, 7129, 9520, 2239]
生成的地图将是
{"1" => 3, "2" => 2, "3" => 1, "7" => 2, "9" => 1}
对于我现在正在处理的功能,我必须获取生成的地图并将其转换为具有百分比的地图。然而问题是,我必须使用 仅 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);
我的代码中的一个函数接受一个数字数组,并将这些数字的第一位数字和它们在数组中出现的次数放入映射中。例如,对于
的数组[1539, 1390, 1023, 2642, 3912, 7419, 7129, 9520, 2239]
生成的地图将是
{"1" => 3, "2" => 2, "3" => 1, "7" => 2, "9" => 1}
对于我现在正在处理的功能,我必须获取生成的地图并将其转换为具有百分比的地图。然而问题是,我必须使用 仅 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);