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

How to sort in asending order the inputed 3 numbers

本文关键字:数字 升序 排序 3个 输入      更新时间:2023-09-26

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

分别输入2、3、4,输出正确。但是当我输入值(2,4,3)(3,2,4)(3,4,2)(4,3,2)(4,2,3)时,输出是错误的。为什么预期的输出没有打印出来?变量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>

要用三个变量回答你最初的问题,你需要在每个主要比较部分和其他部分写出变量的相反顺序。

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

您可以使用内置sort()函数来完成此操作…

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(' '))

根据这些值创建一个数组,并使用array .prototype.sort():

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