Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:使用reduce()将频率转换为百分比?_Javascript_Reduce - Fatal编程技术网

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

Javascript:使用reduce()将频率转换为百分比?,javascript,reduce,Javascript,Reduce,我代码中的一个函数接受一个数字数组,并将这些数字的第一个数字以及它们在数组中出现的次数放入一个映射中。例如,对于 [1539, 1390, 1023, 2642, 3912, 7419, 7129, 9520, 2239] 生成的地图将是 {"1" => 3, "2" => 2, "3" => 1, "7" => 2, "9" => 1} 对于我现在正在处理的函数,我必须将生成的映射转换为带有百分比的映射。但问题是,我只能使用reduce()和map()函数 到

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

[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}
比例函数(obj){
设m=newmap()
const sum=Object.keys(obj).reduce((acum,item)=>{
返回acum+obj[项目];
}, 0);
Object.keys(obj.map)(key=>{
m、 设置(键,((对象[键]/和)*100.toFixed(2));
})
返回m;
}

最高百分比(obj)
您不会将百分比计算代码放入
.reduce()
回调中。您可以使用
.reduce()
将计数累加到一个10位数的数组中,然后使用
.map()
将其转换为一个带有百分比的数组,然后再次使用
.reduce()
将其转换为一个对象。这将在我的控制台中返回[object,object,object,object,object,object,你还需要澄清我的问题吗?将数组更改为映射结构库,我基本上将你的代码用作框架。帮助我找到正确的方向。