首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编写一条JavaScript条件语句对三个数字进行排序

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

Stack Overflow用户
提问于 2018-07-05 02:11:05
回答 4查看 4.4K关注 0票数 1

这是我的代码。这很简单……我不明白为什么无论我做什么,结果都是2,1,3,而不是1,2,3,当我尝试对3,2和1进行排序时,我是不是在逻辑或代码中的某个地方犯了错误?

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);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-05 02:15:25

在以下情况下:

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); 
    }
 }
票数 3
EN

Stack Overflow用户

发布于 2018-07-05 02:48:14

下面是编写处理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
    ...
}
票数 1
EN

Stack Overflow用户

发布于 2018-07-05 02:19:07

您可能只想使用JavaScript数组.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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51179074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档