如何按顺序排序输入的3个数字

时间:2016-09-29 18:06:18

标签: javascript

我编写了以下JavaScript代码,以按数字升序排序。数字由用户输入获取。这里我声明x,y和z是用户输入的变量。

当我分别输入值2,3和4时,输出是正确的。但是当我输入值(2,4,3)(3,2,4)(3,4,2)(4,3,2)(4,2,3)时输出错误。为什么不打印预期的输出?                         var x,y,z;

x = parseInt(prompt("Enter num"));
y = parseInt(prompt("Enter num"));
z = parseInt(prompt("Enter num"));


if ((x<y)&&(x<z))
    {
        document.write(x);
             if (y<z)
                {
                    document.write(y);
                    document.write(z);
                }
    }

else if ((y<z)&&(y<x))
    {
        document.write(y);
            if (z<x)
                {
                    document.write(z);
                    document.write(x);
                }
    }

else if ((z<x)&&(z<y))
    {
        document.write(z);
            if (x<y)
                {
                    document.write(x);
                    document.write(y);
                }
    }

</body>
</html>

3 个答案:

答案 0 :(得分:1)

您可以使用sort()功能中的构建来执行此操作...

&#13;
&#13;
x = parseInt(prompt("Enter num"));
y = parseInt(prompt("Enter num"));
z = parseInt(prompt("Enter num"));

var sorted = [x,y,z].sort(function(a, b) {
  return a - b;
})
console.log('sorted: ',sorted.join(' '))
&#13;
&#13;
&#13;

答案 1 :(得分:1)

要使用三个变量回答原始问题,您需要为每个主要比较另一个部分,并写出变量的相反顺序。

var x = parseInt(prompt("Enter num")),
    y = parseInt(prompt("Enter num")),
    z = parseInt(prompt("Enter num"));

if (x < y && x < z) {
    document.write(x);
    if (y < z) {
        document.write(y);
        document.write(z);
    } else {                  // add this
        document.write(z);
        document.write(y);
    }
} else if (y < z && y < x) {
    document.write(y);
    if (z < x) {
        document.write(z);
        document.write(x);
    } else {                  // add this
        document.write(x);
        document.write(z);
    }
} else {                      // you can skip the comparison here,
    document.write(z);        // because there is no other possibillity
    if (x < y) {
        document.write(x);
        document.write(y);
    } else {                  // add this
        document.write(y);
        document.write(x);
    }
}

您可以收集数组中的值,然后按数值对其进行排序。

var length = 3,
    array = [];

while(array.length<length) {
    array.push(+prompt("Enter num"));
}
array.sort(function (a, b) { return a - b; });
console.log(array);

答案 2 :(得分:0)

从值创建数组,并使用Array.prototype.sort():

&#13;
&#13;
var x = parseInt(prompt("Enter num"), 10);
var y = parseInt(prompt("Enter num"), 10);
var z = parseInt(prompt("Enter num"), 10);

var arr = [x,y,z];
console.log(arr.sort(function(a,b) { return a-b; }))
&#13;
&#13;
&#13;