编写JavaScript条件语句以对三个数字进行排序

时间:2018-07-04 18:11:05

标签: javascript conditional

这是我的代码。这很简单...我不明白为什么无论我做什么,为什么给我2、1、3的结果,而当我尝试对3、2和1进行排序时却没有得到1、2、3的结果。在我的逻辑或代码中的某个地方?

function sort (a, b, c) {
  if(a < b && b < c) {
    document.write(a, b , c);
  } else if (a < b && c < b) {
    document.write(a, c, b);
  } else if (b < a && a < c) {
    document.write(b, a, c);
  } else if(b < a && c < a) {
    document.write(b, c, a); 
  } else if(c < a && a < b) {
    document.write(c, a, b);
  } else {
    document.write(c, b , a);
  }
}

sort(3,2,1);

5 个答案:

答案 0 :(得分:2)

在以下情况下:

else if (a < b && c < b) {
    document.write(a, c, b);
  } 

如果c小于a怎么办?您只是在检查是否a

示例:

var a = 9, b = 10, c = 8;

根据上述条件输出将是:

output : 9,8,10

但是正确的输出应该是:

Correct output : 8,9,10

类似的情况:

else if(b < a && c < a) {
    document.write(b, c, a); 
  } 

您正在执行与上述完全相同的操作。这就是为什么的情况:

var a = 3, var b = 2, var c = 1

您的输出结果是:2,1,3,因为您没有将b与c进行比较,而只是打印b,c,a,这会导致错误的结果。

您应该做的是:

else if(b < a && c < a) {
    if(b < c){
      document.write(b, c, a); 
    } else{
       document.write(c, b, a); 
    }
 }

答案 1 :(得分:1)

这是另一种编写if / else语句的排序函数的方法

用a,b,c可以置换它们(3种可能性) 你只要把它们写在某个地方

a,b,c
a,c,b
b,a,c,
b,c,a
c,a,b
c,b,a

然后您可以测试任何这些安排...

function sort(a,b,c){

    if a<=b && b<=c
        print a,b,c
    else if a<=c && c<=b
        print a,c,b
    else if b<=a && a<=c
        print b,a,c
    ...
}

答案 2 :(得分:0)

您可能只想使用JavaScript Array .sort()方法就可以了。

示例:

function sort (x) {
    document.write(x.sort());
}

sort([3,2,1]);

甚至只是:

document.write([3,2,1].sort());

有关sort()的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

答案 3 :(得分:0)

另一种方法是传递数字数组,然后使用sort()方法:

const sorted = [3,2,1].sort((a,b) => a - b);
console.log(sorted);

优点:它可以与任意数量的元素一起使用,并且您无需手动创建所有if

答案 4 :(得分:-2)

  else if(b < a && c < a) {
      if(b < c){
        document.write(b, c, a); 
      } else{
        document.write(c, b, a); 
      }
  }