javascript - 动态进度条高度
问题描述
我有一个对象:
myObj = [
{
word_id : "...",
sub_word : {
"attr1" : "....",
"attr2" : "....",
},
"level" : 0
},
{
word_id : "...",
sub_word : {
"attr1" : "....",
"attr2" : "....",
},
"level" : 1
},
{
word_id : "...",
sub_word : {
"attr1" : "....",
"attr2" : "....",
},
"level" : 2
},
.
.
.
.]
我有三个进度条,显示每个单词的百分比取决于它的水平。例如,如果myObj
包含17个单词:13个2级单词,2个1级单词和2个0级单词。三个进度条将分别填充CSS/JS,使用每个级别的单词数乘以10 .为此,我写了类似的东西:
$(".progressBar").css("height", numberOfWords*10 + '%');
这里的问题是,如果我有超过 10 个单词的某个级别,进度条将被完全填满,因为计算出的高度将是进度条的 100%。
有没有办法根据myObj
长度动态制作进度条?
解决方案
您可以像这样计算百分比:(级别与您的示例相匹配)
var words = [
{ "level": 2, "word_id": "Never" },
{ "level": 2, "word_id": "Gonna" },
{ "level": 2, "word_id": "Give" },
{ "level": 2, "word_id": "You" },
{ "level": 2, "word_id": "Up" },
{ "level": 2, "word_id": "Never" },
{ "level": 2, "word_id": "Gonna" },
{ "level": 2, "word_id": "Let" },
{ "level": 2, "word_id": "You" },
{ "level": 2, "word_id": "Down" },
{ "level": 2, "word_id": "Never" },
{ "level": 2, "word_id": "Gonna" },
{ "level": 2, "word_id": "Run" },
{ "level": 0, "word_id": "Around" },
{ "level": 0, "word_id": "And" },
{ "level": 1, "word_id": "Desert" },
{ "level": 1, "word_id": "You" }
];
var levels = [...new Set(words.map(a => a.level))]
levels.sort();
for (var level of levels) {
var wordsPerLevel = words.filter(a => a.level == level).length;
var percentage = Math.round((wordsPerLevel/words.length)*100);
console.log("Level " + level + ": " + percentage + "%");
}
这将显示words
数组中包含的每个级别的百分比。级别将被排序。
推荐阅读
- ms-access - Microsoft Access Query 中的序号
- vue.js - 选择选项 1 选择选项 2 并在 VueJs 中查看结果(文本)
- javascript - 在 Firebase Cloud Function 中从 equalTo 返回空结果
- angularjs - AngularJs:警告:丑化失败。意外的令牌:grunt build 上的 punc ())
- ilspy - 为什么 ILSpy 在堆栈上添加变量而不是指令?
- mysql - 添加正确的 MySQL 触发器
- c# - C# - 无法调用动作委托
- javascript - 我如何转换为 excel 对象`HTMLImageElement`
- networking - TCP和UDP中n的区别?
- hibernate - 休眠查询返回空值