#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));