比较3个值 - 显示最高值

时间:2017-06-30 08:06:35

标签: javascript jquery

进行用户选择的调查:

A B或C

然后,我需要知道用户是否选择了主要是A,B,C或

我正在尝试一些jQuery逻辑'但没有太多运气,由于表达预期错误。

是否有更简洁/更好的方式来纯粹显示哪个变量最高?

我目前的jQuery:

var count = 0;
var count_a = 0;
var count_b = 0;
var count_c = 0;

$('.radio-select').click(function()
{

    var chosen_option = $(this).val();

    if(chosen_option == 'a')
    {
        count++;
        count_a ++;
    }

    if(chosen_option == 'b')
    {
        count++;
        count_b ++;
    }

    if(chosen_option == 'c')
    {
        count++;
        count_c ++;
    }

    check_numbers(count, count_a, count_b, count_c);

})

function check_numbers(count, a, b, c)
{

    parseInt(a);
    parseInt(b);
    parseInt(c);

    if(count == '8')
    {
        if ((a > b ) && (a > c))
        {
            alert("A is Highest");
        }

        if ((b > a ) && (b > c))
        {
            alert("B is Highest");
        }

        if(c > b) && (c > a))
        {
            alert("C is highest!");
        }
    }

}

jsFiddle Example

7 个答案:

答案 0 :(得分:3)

如果您想要一种较小的方法,可以使用内联if语句。如果这是一个更好的方式,我会喜欢它。

a = 5
b = 11
c = 6
console.log((a > b && a > c? a : (b > c ? b : c)))

答案 1 :(得分:2)

首先,您不需要在a,b,c上使用parseInt(),因为它们已经是整数。再次count是一个整数,而你将它与一个字符串进行比较。这应该有用。

if(count == 8)
{
    if ((a > b ) && (a > c))
    {
        alert("A is Highest");
    }

    else if ((b > a ) && (b > c))
    {
        alert("B is Highest");
    }

    else
    {
        alert("C is highest!");
    }

答案 2 :(得分:1)

您需要获取parseInt返回的值。在a = parseInt(a);中对它们进行比较之前,请使用它:if...else和其他变量相同。

答案 3 :(得分:1)

function check_numbers(count, a, b, c)
{
var x = parseInt(a),
    y = parseInt(b),
    z = parseInt(c);

if(count == 8)
{
    var result = (x > y ? (x > z ? x : z) : (y > z ? y : z));
}
}

答案 4 :(得分:1)

这是check_numbers()的修改版本,如果我找到你的话,按预期工作。我想说的是使用Math.max()从一组数字中找到最高的数字。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max



function check_numbers(count, a, b, c) {

     if(count === 8) {
        var numArray = [a, b, c];
        var highest = Math.max.apply(null, numArray);
        console.log(highest);
        
        if (highest === a) {
          console.log('a is highest');
        } else if (highest === b) {
          console.log('b is highest');
        } else if (highest === c) {
          console.log('c is highest');
        }
        
    }

}

check_numbers(8, 1 , 2, 5);
check_numbers(8, 5, 2, 1);
check_numbers(8, 1 , 5, 2);




答案 5 :(得分:1)

@StuBlackett您可以考虑将值和标签添加到数组中,然后对Descending进行排序并在顶部返回标签。

function CompareIndexZero(a, b) {
   if (a[0] < b[0]) return 1;
   if (a[0] > b[0]) return -1;
   return 0;
 }

function myFunction() {
var count_a = 2;
var count_b = 5;
var count_c = 4;

var arrHighest = [];
arrHighest.push([count_a, "A"]);
arrHighest.push([count_b, "B"]);
arrHighest.push([count_c, "C"]);

arrHighest.sort(CompareIndexZero);

alert(arrHighest[0][1] + " is the highest");
}

答案 6 :(得分:1)

您是否还考虑过多个答案可以分享最高分数?

我的2美分:

var count = count_a = count_b = count_c = 0;

$('.radio-select').on('click', function() {
    var chosen_option = $(this).val();
    if (chosen_option == 'a') {
      count_a++;
    }
    else if (chosen_option == 'b') {
      count_b++;
    }
    else if (chosen_option == 'c') {
      count_c++;
    }
    if (++count == 8) {
      check_numbers(count_a, count_b, count_c);
    }
});

function check_numbers(a, b, c) {
  var highest = ((a > b && a > c) ? a : (b > c)? b : c),
      multiple = false,
      alertText = '';
  if (a == highest) {
    alertText += 'A';
  }
  if (b == highest) {
    if (alertText != '') {
      multiple = true;
      alertText += ' and ';
    }
    alertText += 'B';
  }
  if (c == highest) {
    if (alertText != '') {
      multiple = true;
      alertText += ' and ';
    }
    alertText += 'C';
  }
  alert(alertText + ' ' + (multiple ? 'are' : 'is') + ' highest!');
}