我编写了以下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>
答案 0 :(得分:1)
您可以使用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(' '))
&#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():
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;