Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 非常简单的数组、循环和逻辑比较问题_Javascript_Arrays - Fatal编程技术网

Javascript 非常简单的数组、循环和逻辑比较问题

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

非常简单的问题:我试图比较数组中的值,但我完全不明白为什么我的比较逻辑失败了。不知何故,在我的循环过程中,6被评估为>524。你知道我做错了什么吗?我完全被难住了。这是密码,谢谢

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;ilog(高位和低位(“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

不过,可能有更好/更简洁的方法来实现这一点。

您是在比较字符串,而不是数字。