Ваш код работает, если массив является массивом чисел, но так как это не так, вы должны привести к числу:
const numb = ['7','10','8','6','7'];
let arr1 = +numb[0];
for (let i=1 ; i < numb.length ; i++) {
if(+numb[i] >= +arr1){
arr1 = +numb[i];
}
} console.log(arr1); // 10
Как вы можете видеть, теперь это работает, так как мы преобразовали через +
все строки в числа. Вы можете сделать это таким образом или просто преобразовать весь массив в числа до , вы начнете перебирать его и оставите другой код как есть.
Точно так же, как к вашему сведению, существуют более краткие способы достижения этого результата:
Поскольку у вас есть массив строк и вы пытаетесь найти число, предпочтительным способом является преобразование этого массива строк в числа, а затем просто использовать Math.max
следующим образом:
const arr = ['7','10','8','6','9']; // <-- array of strings
let r = Math.max(...arr.map(x => +x)) // <-- cast to number and find max
console.log(r) // 10
Другой вариант, если вам действительно нужно работать со строками, это отсортировать массив в порядке убывания и взять первый элемент следующим образом:
const arr = ['7','10','8','6','9'];
let r = arr.sort((a,b) => b.localeCompare(a, undefined, { numeric: true }))[0]
console.log(r) // 10
При этом используется метод String.localeCompare с опцией numeric: true
, которая учитывает числа в строках при сортировке.