为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用for循环查找字符串中的最大数

如何使用for循环查找字符串中的最大数

天涯尽头无女友 2021-10-07 10:54:59
它应该很简单,但是我编写的代码无论我如何调整似乎都不起作用我尝试将字符串拆分为一个数组并使用 for 循环遍历并比较所有数字,但我一直得到错误的答案function highAndLow(numbers){  // ...  numbers=numbers.split(" ");  let lowNum=numbers[0];  let highNum=numbers[0];  console.log(numbers)    for (var i = 1; i < numbers.length; i++) {        if (numbers[i]>highNum){            highNum=numbers[i]        }    else if(numbers[i]<lowNum){    lowNum=numbers[i]    }}console.log(highNum)  return highNum+" "+lowNum}highNum 在应该返回 542 时一直返回 6,而 lowNum 也表现得很奇怪......
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

正如其他人所提到的,您的直接问题是字符串与数字不同,因此您必须将(字符串)数字转换为实际数字。除此之外,这里还有一些更短的代码。


// String of space delimited numbers

var string = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6";

// Split into an array

var nums = string.split(' ');


// Use built-in Math method which with some nifty ES6 syntax

// Note that Math.max/min automatically convert string args to number

var highNum = Math.max(...nums);

var lowNum = Math.min(...nums);


查看完整回答
反对 回复 2021-10-07
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

也许你试试这些。


function highAndLow(numbers){


  numbers=numbers.split(" ");

  let lowNum =+ numbers[0];

  let highNum =+ numbers[0];


  console.log(numbers);


  for (var i = 1; i < numbers.length; i++) {

      let num =+ numbers[i];   

      if (num > highNum){

        highNum = num 

      } else if(num < lowNum) {

        lowNum = num

      }

  }


  console.log(highNum)

  return highNum + " " + lowNum

}


查看完整回答
反对 回复 2021-10-07
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您需要在使用比较之前将字符串解析为数字,否则它将按字典顺序匹配为字符串而不是数字


console.log("22" > "3")

console.log( "22" > 3)        // implicit conversion to number 

console.log(+"22" > +"3")     // explicitly converted to number 


查看完整回答
反对 回复 2021-10-07
  • 3 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信