Javascript 非常简单的数组、循环和逻辑比较问题
非常简单的问题:我试图比较数组中的值,但我完全不明白为什么我的比较逻辑失败了。不知何故,在我的循环过程中,6被评估为>524。你知道我做错了什么吗?我完全被难住了。这是密码,谢谢Javascript 非常简单的数组、循环和逻辑比较问题,javascript,arrays,Javascript,Arrays,非常简单的问题:我试图比较数组中的值,但我完全不明白为什么我的比较逻辑失败了。不知何故,在我的循环过程中,6被评估为>524。你知道我做错了什么吗?我完全被难住了。这是密码,谢谢 function highAndLow(numbers){ var compArr = numbers.split(" "); var highNum = compArr[0] var lowNum = compArr[0]; for (i = 1; i < compA
function highAndLow(numbers){
var compArr = numbers.split(" ");
var highNum = compArr[0]
var lowNum = compArr[0];
for (i = 1; i < compArr.length; i++) {
if (compArr[i] > highNum) {
highNum = compArr[i]
console.log(highNum)
}
}
for (i = 1; i < compArr.length; i++) {
if (compArr[i] < lowNum) {
lowNum = compArr[i]
}
}
return highNum + " " + lowNum
}
highAndLow("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")
功能高低(数字){
var compArr=numbers.split(“”);
var highNum=compArr[0]
var lowNum=compArr[0];
对于(i=1;ihighNum){
highNum=compArr[i]
console.log(highNum)
}
}
对于(i=1;i
同样,我也不知道怎么做,但我在控制台中得到的结果是highNum为6(不正确),lowNum为-214(正确)。我遗漏了一些明显的东西吗?compArr的元素是字符串,因此它们是按字典顺序进行比较的,而不是按数字进行比较的。您应该创建一个数字数组:
var compArr = numbers.split(" ").map(Number);
功能高低(数字){
var compArr=numbers.split(“”).map(Number);
var highNum=compArr[0]
var lowNum=compArr[0];
对于(i=1;ihighNum){
highNum=compArr[i]
console.log(highNum)
}
}
对于(i=1;i log(高位和低位(“45295440-214542-641-366-6”)代码>编辑以包含Barmar的答案。谢谢你,巴尔马
我想出来了。我的比较运行到数组的边缘,并尝试与未定义的进行比较。另外,由于我的设置方式,这个方法不能处理只有两个值的字符串。这是我的新代码:
function highAndLow(numbers){
var compArr = numbers.split(" ").map(Number);
var highNum = compArr[0]
var lowNum = compArr[0];
if (compArr.length === 2) {
if (compArr[1] > highNum) {
highNum = compArr[1]
}
if (compArr[1] < lowNum) {
lowNum = compArr[1]
}
} else {
for (i = 1; i < compArr.length - 2; i++) {
if (compArr[i] > highNum) {
highNum = compArr[i]
}
}
for (i = 1; i < compArr.length - 2; i++) {
if (compArr[i] < lowNum) {
lowNum = compArr[i]
}
}
}
return highNum + " " + lowNum
}
功能高低(数字){
var compArr=numbers.split(“”).map(Number);
var highNum=compArr[0]
var lowNum=compArr[0];
如果(比较器长度===2){
如果(比较器[1]>highNum){
highNum=compArr[1]
}
if(比较器[1]highNum){
highNum=compArr[i]
}
}
对于(i=1;i
不过,可能有更好/更简洁的方法来实现这一点。您是在比较字符串,而不是数字。