字符串转数组,然后判断是否是数组中的元素

2019-01-23  本文已影响7人  _信仰zmh
    // 处理一个元素是否是数组中的元素 value必须相等
    isInArray(str,value){
        var arr = [];
        if(str||str==0){
            arr = str.split(",");
        }else{
            return false;
        }
        for(var i = 0; i < arr.length; i++){
            // 不用全等比较
            if(value == arr[i]){
                return true;
            }
        }
        return false;
    } 

    handleThresholdStatus(series) {
        series.thresholds = StatusPluginCtrl.parseThresholds(this.panel);
        series.inverted = series.thresholds.crit < series.thresholds.warn;
        series.display = this.panel.display;

        let isCritical = false;
        let isWarning = false;
        let isCheckRanges = series.thresholds.warnIsNumber && series.thresholds.critIsNumber;
        if (isCheckRanges) {
            if (!series.inverted) {
                if (series.display_value >= series.thresholds.crit) {
                    isCritical = true
                } else if (series.display_value >= series.thresholds.warn) {
                    isWarning = true
                }  
            } else {
                if (series.display_value <= series.thresholds.crit) {
                    isCritical = true
                } else if (series.display_value <= series.thresholds.warn) {
                    isWarning = true
                }
            }
        } else {
            // 之前走的逻辑 是等值比较
            // if (series.display_value == series.thresholds.crit) {
            //  isCritical = true
            // } else if (series.display_value == series.thresholds.warn) {
            //  isWarning = true
            // }
             
            // 改之后的逻辑 非数字进入该步骤 进行多元素循环等值比较
            // 为了不影响其他的功能,就只判断String Threshold单独走这个新加的逻辑,其他的还是走之前的逻辑
            // 如果选中的是 String Threshold 就判断是否是 这个数组中得某一个元素
            // 优先crit crit等级高于warn
            if(this.panel.valueHandler == 'String Threshold'){
                // indexOf 字符串使用存在问题 如 'index' 也能匹配到 'index0,index1',而只想匹配到'index0'
                // if (series.thresholds.crit && series.thresholds.crit.indexOf(series.display_value)>0) {
                if (this.isInArray(series.thresholds.crit, series.display_value)) {
                    isCritical = true;
                // } else if (series.thresholds.warn && series.thresholds.warn.indexOf(series.display_value)>0) {
                } else if (this.isInArray(series.thresholds.warn, series.display_value)) {
                    isWarning = true;
                }
            }else{
                if (series.display_value == series.thresholds.crit) {
                    isCritical = true
                } else if (series.display_value == series.thresholds.warn) {
                    isWarning = true
                }
            }
            
        }

        // Add units-of-measure and decimal formatting or date formatting as needed
        series.display_value = this.formatDisplayValue(series.display_value);

        if(isCritical) {
            this.crit.push(series);
            series.displayType = this.displayTypes[0]
        } else if(isWarning) {
            this.warn.push(series);
            series.displayType = this.displayTypes[0]
        } else if (series.display) {
            if(series.displayType == "Annotation") {
                this.annotation.push(series);
            } else {
                this.display.push(series);
            }
        }
    }

上一篇下一篇

猜你喜欢

热点阅读