Как мне найти максимальное однозначное целое число в массиве?

#javascript #arrays

#javascript #массивы

Вопрос:

Я пытаюсь найти максимальное однозначное целое число в массиве.

Допустим, у меня есть массив:

 [-6, -91, 1011, -100, 84, -22, 0, 1, 743]
  

Максимальное целое число — это 1011 то, которое я нашел с помощью:

 Math.max.apply(0,array)
  

Но мне нужно найти максимальное однозначное целое число. Есть ли какой-либо способ его найти. Вывод должен быть 1 в соответствии с приведенным выше массивом.

Комментарии:

1. чего вы ожидаете, если ничего не найдено?

2. было бы неплохо получить ответ

Ответ №1:

 Math.max(...myArray.filter((n) => Math.abs(n) < 10))
  

Комментарии:

1. не могу не проголосовать против, извините… попробуйте с [-26, -91, 1011, -100, 84, -22, 220, 12, 743] …. -Infinity !!!

2. Хотя это правда, что я абсолютно не думал об этом, в вопросе не было указано желаемое поведение, когда не найдено целое число из одной цифры.

3. Я отменю причину операционной лени, а не потому, что она того заслуживает, … ибп … я больше не могу

Ответ №2:

Вы можете использовать filter для получения однозначных цифр и Math.max для нахождения максимального числа из одной цифры

 let Arr = [-6, -91, 1011, -100, 84, -22, 0, 1, 743];
let singleDigits = Arr.filter(e => e >= -9 amp;amp; e <= 9);
if(singleDigits.length){
console.log(Math.max(...singleDigits));
}else{
console.log('there is no single digit number.')
}  

Комментарии:

1. Должно быть e <= 9

2. не могу не проголосовать против, извините… попробуйте с [-26, -91, 1011, -100, 84, -22, 220, 12, 743] …. -Infinity !!!

3. @fedeghe: OP не сказал, что всегда будет одна цифра или нет. Всегда есть исключение. Вы обнаружили, что чего-то не хватает, о чем просил OP? Хотя у меня есть дескриптор, если отсутствует одна цифра, теперь я хочу, чтобы вы проголосовали «За».

Ответ №3:

Я бы просто использовал reduce

 let Arr = [-6, -91, 1011, -100, 84, -22, 0, 1, 743];
const maxOneigit = Arr.reduce((acc, el) => {
  return (el > -10 amp;amp; el < 10 amp;amp; el > acc) ? el : acc
}, null)
  

более того, эта ошибка null позволяет вам четко определить, чего вы ожидаете от этой функции, когда не найдено целых чисел в интервале {-9, 9}

Ответ №4:

 B_POS = []
C_NEG = []
C_NEG_Up = []
B_POS_Up = []
def solution(A):
  A.sort()
  print(A)
  for j in A:
      if j < 0:
         C_NEG.append(j)
         if (len(str(j)) == 2):
            C_NEG_Up.append(j)
      else:
         B_POS.append(j)
            if (len(str(j)) == 1):
               B_POS_Up.append(j)
  both = B_POS_Up   B_POS_Up
  print(max(both,default = None))
  

A = [ -91, 1011, -100,184,0,-22, 473]
решение (A)

Ответ №5:

Вот простое решение на языке Си.

 #include <stdio.h>    
int find_max_single_digit(int arr[], int size) {
    int result = 0;
    for(int i = 0; i<size; i  ) {
        /*
         * -9 to 9 will be single digit
         */
        if (arr[i] > -10  amp;amp; arr[i] < 10) {
            if(arr[i] > result) {
                result = arr[i];
            }
        }
    }
    return resu<
}

int main()
{
    int arr[]= {-6, -91, 1011, -100, 84, -22, 0, 1, 743};
    int result = 0;
    int size = sizeof(arr)/sizeof(arr[0]);
    result = find_max_single_digit(arr, size);
    printf("result = %dn",result);
    return 0;
}
  

Ответ №6:

Это может быть достигнуто в php с помощью приведенного ниже

 $num = [];
array_filter($data_array, function($n) use (amp;$num) {
    if($n >= 1 amp;amp; $n < 10) {
        array_push($num, $n);
    }
});
return (max($num));