首页 > 解决方案 > Javascript比较奇怪

问题描述

我遇到了比较的问题。结果假设为 11,因为索引 11 的产品成本低于索引 18 的产品成本。但不知何故,结果是 18

    var scores = [60, 50, 60, 58, 54, 54, 58, 50, 52, 54, 48, 69, 34, 55, 51, 52, 44, 51, 69, 64, 66, 55, 52, 61, 46, 31, 57, 52, 44, 18,
    41, 53, 55, 61, 51, 44];
    var costs = [.25, .27, .25, .25, .25, .25, .33, .31, .25, .29, .27, .22, .31, .25, .25, .33, .21, .25, .25, .25, .28, .25, .24, .22, .20, .25, .30, .25, .24, .25,
        .25, .25, .27, .25, .26, .29];
//TOTAL, HIGHEST, INDEX OF THE HIGHEST
function index(array,arrayCost){
    var maximum=Math.max(...array);
    var arrayIndex=[];
    for(var i=0;i<array.length;i++){
        if(array[i]==maximum){
            arrayIndex.push(i)
        }
    }

   var minimum=arrayCost[arrayIndex[0]];//0.22
   for(var i=0;i<arrayIndex.length;i++){
       if(arrayCost[arrayIndex[i]]<=minimum){//0.25>=0.22
           minimum=arrayIndex[i];
       }
   }
    return minimum;
}

标签: javascript

解决方案


在您的第二个if中,您重新分配minimumarrayIndex[i]11,因此在下一个循环中,最小值将小于11并且arrayCost[arrayIndex[i]]将小于11。您可以创建另一个存储该index值的变量。

function index(array, arrayCost) {
  var maximum = Math.max(...array);
  var arrayIndex = [];
  for (var i = 0; i < array.length; i++) {
    if (array[i] == maximum) {
      arrayIndex.push(i);
    }
  }

  var resultIndex = arrayIndex[0];
  var minimumCost = arrayCost[arrayIndex[0]]; //0.22
  for (var i = 0; i < arrayIndex.length; i++) {
    if (arrayCost[arrayIndex[i]] <= minimumCost) {
      //0.25>=0.22
      minimumCost = arrayCost[arrayIndex[i]];
      resultIndex = arrayIndex[i];
    }
  }
  return resultIndex;
}


推荐阅读