写一个JavaScript条件语句对三个数进行排序
Write a JavaScript conditional statement to sort three number
这是我的代码。这很简单......我不明白为什么无论我做什么它都会给我结果 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);
在以下条件下:
else if (a < b && c < b) {
document.write(a, c, b);
}
如果c小于a怎么办?您只是检查是否 a < b 和 c < b,但您没有检查 a 和 c 之间哪个数字更大。
示例:
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);
}
}
您可能只想使用 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
另一种方法是传递一个数组,并使用sort()方法:
const sorted = [3,2,1].sort((a,b) => a - b);
console.log(sorted);
排序的优点:它适用于任意数量的元素,并且您不需要手动制作所有的 if
else if(b < a && c < a) {
if(b < c){
document.write(b, c, a);
} else{
document.write(c, b, a);
}
}
这是编写排序函数的另一种方法,该函数操作 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, 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);
在以下条件下:
else if (a < b && c < b) {
document.write(a, c, b);
}
如果c小于a怎么办?您只是检查是否 a < b 和 c < b,但您没有检查 a 和 c 之间哪个数字更大。
示例:
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);
}
}
您可能只想使用 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
另一种方法是传递一个数组,并使用sort()方法:
const sorted = [3,2,1].sort((a,b) => a - b);
console.log(sorted);
排序的优点:它适用于任意数量的元素,并且您不需要手动制作所有的 if
else if(b < a && c < a) {
if(b < c){
document.write(b, c, a);
} else{
document.write(c, b, a);
}
}
这是编写排序函数的另一种方法,该函数操作 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
...
}