首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript通过分层结构从html获取文本

Javascript通过分层结构从html获取文本
EN

Stack Overflow用户
提问于 2017-08-25 15:59:35
回答 2查看 71关注 0票数 0

下面是我的代码:

代码语言:javascript
复制
var label;
$('.card-label.mod-card-detail ').each((index, element) => {
    text = $(element).text().toUpperCase();
    switch(text){
        case "CODE REVIEW": 
            label = text;
            break;
        case "HOTFIX":
            if(label !== "CODE REVIEW") label = text;
            break;
        case "BUG":
            if(label !== "CODE REVIEW" && label !== "HOTFIX") label = text;
            break;
        case "FEATURE":
            if(label !== "CODE REVIEW" && label !== "HOTFIX" && label !== "BUG") label = text;
    }
})

我正在从html文件中获取标签名称。我需要应用标签层次结构:CODE REVIEW -> HOTFIX -> BUG -> FEATURE。有没有办法让这段代码更干净、更有效?

EN

回答 2

Stack Overflow用户

发布于 2017-08-25 16:32:32

一种方法是:

  1. 创建一个带有标签键的对象并分配相应的权重。
  2. 将此对象推送到数组中
  3. 使用自定义排序

代码语言:javascript
复制
//Label texts : CODE REVIEW -> HOTFIX -> BUG -> FEATURE
//Corresponding weights : 4 -> 3 -> 2 -> 1


// decalre array 
var labelArr = [];
//push objects in switch case to this array
var labelText = {  
    text: 'CODE REVIEW' ,  
    weight: 4
};
var labelText1 = {  
    text: 'HOTFIX' ,  
    weight: 3
};
var labelText2 = {  
    text: 'BUG' ,  
    weight: 2
};
labelArr.push(labelText);
labelArr.push(labelText1);
labelArr.push(labelText2);



labelArr.sort(
          function(x, y)
          {
             return y.weight - x.weight ;
          }
        );
// Teatr White White 023 White flower
console.log(labelArr);
var finalLabel = labelArr.map(function(a) {return a.text;});
document.write(finalLabel.join('->'));

票数 0
EN

Stack Overflow用户

发布于 2017-08-25 17:16:32

我想我有一个更简单的解决方案,只需一遍元素,不需要sort()或map():

代码语言:javascript
复制
var labels = ['FEATURE', 'BUG', 'HOTFIX', 'CODE REVIEW'],
    priority = -1;

$('.card-label.mod-card-detail ').each((index, element) => {
    let text = $(element).text().toUpperCase(),
        current_priority = labels.indexOf(text);

    // we found something with higher priority
    if(current_priority > priority) {
        priority = current_priority;
    }
});

if(priority < 0) {
    console.log("No labels found");
} else {
    let resulting_text = labels[priority];
    console.log("Highest priority found:", resulting_text);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45876856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档