尝试在另一个数组中搜索数组,其他数组具有内部优先级

时间:2017-05-03 18:54:02

标签: javascript angularjs

ic是我的输入数组,cbList是我检查agaist的内部数组。我想检查整个数组并根据cbList返回最高值。我有一些丑陋的代码已经尝试但我不想使用它,有人可以基本上使这更好,更有效。在我的情况下,我一直在寻找并找不到任何东西。

所以基本上只想检查ic,如果最高弹出,如果没有找到最高,则突破并返回该值,然后继续检查值,依此类推......

            function hcbin(inv){
            var fh;
            var ic = ['low','med','low','high'];
            var cbList = [ 'low', 'med', 'high','highest'];


            for( var i = 0; i < ic.length; i++) {
                if (ic[i] === cbList[3]) {
                    $scope.hdc = ic[i];
                    fh = true;
                }
            }

            if (!fh){
                for( var ii = 0; ii < ic.length; ii++) {
                    if (ic[ii] === cbList[2]) {
                        $scope.hdc = ic[ii];
                        fh = true;
                    }
                }
            }

             if (!fh){
                 for( var iii = 0; iii < ic.length; iii++) {
                     if (ic[iii] === cbList[1]) {
                         $scope.hdc = ic[iii];
                         fh = true;
                     }
                 }
             }

             if (!fh){
                 for( var iiii = 0; iiii < ic.length; iiii++) {
                     if (ic[iiii] === cbList[0]) {
                         $scope.hdc = ic[iiii];
                         fh = true;
                     }
                 }
             }
        };

1 个答案:

答案 0 :(得分:1)

试试这个代码段:

var ic = ['low','med','low', 'high'];
var cbList = [ 'low', 'med', 'high','highest'];
var result = null;

for (var i = (cbList.length - 1); i >=0; i--) {
  if (ic.indexOf(cbList[i]) > -1) {
    result = cbList[i];
    break;
  }
}

console.log(result);

确保cbList保持优先顺序(从最高重要性),因为for基于此。