【发布时间】:2018-08-14 09:21:26
【问题描述】:
我是 JS 新手
我有一个数组和一个相同数组的对象。
我想获取特定类别的总数。
例如:
1.Critical: from 30-45
2.High: from 16-27
3.Medium: from 5-15
4.Low:from 3-4
我得到的数组布局有两种格式。
从浏览器:
slect_score
[{…}]0:
4: 1
5: 3
15: 6
20: 1
30: 2
45:2
__proto__: Objectlength: 1__proto__: Array(0)
从浏览器:
score_map
{4: 1, 5: 3, 15: 6, 20: 1, 30: 2, 45: 2}
__proto__:Object
All in All,我想对数字进行分组,得到每个类别的出现总数。
对于上面的例子:我应该有:
1.Critical: 4
2.High: 1
3.Medium: 9
4.Low: 1
这是我的代码:我正在尝试将其插入到 Django 模板中:
var score = document.getElementById("score").innerHTML;
var score_array = [score.split(",").map(Number)];
var score_array_a = score_array[score_array.length -1];
var score_array_b = score_array_a.slice(0, -1);
var score_sum = score_array_b.reduce(function(a, b){ return a +
b;}, 0);
var score_avg = parseFloat(score_sum / score_array_b.length);
var score_map = score_array_b.reduce(function(obj, b) {
obj[b] = ++obj[b] || 1;
return obj;
}, {});
var slect_score = new Array(score_map);
在我的 Django 模板中:
<p id=score>
{% for asset in self.get_children %}{% for finding in
asset.get_children.specific %}
{% with finding.Identification|mul:Reconize
as ID_REC %}{{ID_REC|mul:Impact}},{% endwith %}{%
endfor %}{% endfor %}
</p>
Django Elements 主要用于计算并获取每个页面的数量并进行计算
答案 Bergur 先生的代码。 以及我获得每个类别总数的方法。 var score = document.getElementById("vul_score").innerHTML;
var score_array = [score.split(",").map(Number)];
var score_array_a = score_array[score_array.length -1];
var score_array_b = score_array_a.slice(0, -1);
var score_sum = score_array_b.reduce(function(a, b){ return a +
b;}, 0);
var score_avg = parseFloat(score_sum / score_array_b.length);
var score_map = score_array_b.reduce(function(obj, b) {
obj[b] = ++obj[b] || 1;
return obj;
}, {})
var scoore = Object.entries(score_map).map(e => Object.assign(e, {
0: +e[0] }));
const scores = [{
name: 'critical',
low: 30,
high: 45,
count: 0
},{
name: 'high',
low: 16,
high: 27,
count: 0
},{
name: 'medium',
low: 5,
high: 15,
count: 0
},{
name: 'low',
low: 3,
high: 4,
count: 0
}]
const score_map_keys = Object.keys(score_map);
scores.forEach(s => {
score_map_keys.forEach(key => {
let count = score_map[key];
if (key >= s.low && key <= s.high) {
s.count = s.count+count
}
});
})
为了得到我所做的每个类别的总数:
[scores[0].count, scores[1].count, scores[2].count, scores[3].count]
我真的要感谢 Bergur 先生。
【问题讨论】:
-
请发布您的代码
-
欢迎来到 Stack Overflow!请查看tour,环顾四周,并通读help center,尤其是How do I ask a good question? 请发布定义您的对象的实际JavaScript代码,而不是在您转储它们时浏览器控制台向您显示的文本渲染出去。实际代码更清晰,让我们更容易为您提供帮助。
-
另外,即使您是新手,最好的办法是进行研究,search 了解 SO 的相关主题,然后尝试一下。 如果在经过更多研究和搜索后您遇到困难并且无法摆脱困境,请发布您的尝试minimal reproducible example,并具体说明您遇到困难的地方。人们会很乐意提供帮助。
-
如果有人有 28 会怎样?高是 27,但关键从 30 开始
-
计算不能是28,它有一个固定的数字。用于计算目的。
标签: javascript arrays object