Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как умножить в массиве только нечётные числа? (https://javascript.ru/forum/misc/80330-kak-umnozhit-v-massive-tolko-nechjotnye-chisla.html)

user2020 23.05.2020 19:25

Как умножить в массиве только нечётные числа?
 
Добрый день! подскажите? как умножить в массиве только чётные числа на 2
и вывести этот массив.
на вход массив получает:
[11,0,9,3,10,4]

у меня получается так: [ 22, 0, 18, 6, 20, 8 ]
должно получаться : [ 11, 0, 9, 6, 20, 8 ]


const doubleEveryEven = (arr) => {
   var doubled = [];
    for (var i = 0; i < arr.length; i++) {
        doubled.push(arr[i] * 2);
    }
    return doubled;
}

рони 23.05.2020 19:32

Цитата:

Сообщение от user2020
только нечётные числа на 2

const doubleEveryEven = (arr) => {
   var doubled = [];
    for (var i = 0; i < arr.length; i++) {
        doubled.push(arr[i] % 2 ? arr[i]  * 2 : arr[i]);
    }
    return doubled;
}
console.log(doubleEveryEven([11,0,9,3,10,4]))

user2020 23.05.2020 19:39

Спасибо! да я неправильно описал, только чётные *2 имел ввиду

user2020 23.05.2020 20:01

const doubleEveryEven = (arr) => {
var doubled = [];
for (var i = 0; i < arr.length; i++) {
doubled.push(arr[i] %2===0 ? arr[i] * 2 : arr[i]);
}
return doubled;

рони 23.05.2020 20:32

Цитата:

Сообщение от user2020
только чётные

doubled.push(arr[i] % 2 ? arr[i] : arr[i]  * 2  );

user2020 23.05.2020 21:24

Цитата:

Сообщение от рони (Сообщение 524809)
doubled.push(arr[i] % 2 ? arr[i] : arr[i]  * 2  );

doubled.push(arr[i] %2===0 ? arr[i] * 2 : arr[i]); хотел уточнить, а вот так не правильно,вроде так проходит?

laimas 23.05.2020 22:03

Цитата:

Сообщение от user2020
вот так не правильно

Правильно, но "букв" больше. :) Четность числа можно проверить и логически, проверяя младший разряд его бинарного значения и тоже будет работать.

Error 24.05.2020 14:55

function doubleEveryEven (arr){
  return arr.map(n=>n+n*(!(n%2)))
}
:)

рони 24.05.2020 15:38

:write: :)
function doubleEveryEven (arr){
  return arr.map(n=>n * (2 - (n & 1)))
}
console.log(doubleEveryEven([11,0,9,3,10,4]))

Malleys 24.05.2020 21:34

Цитата:

Сообщение от laimas
Четность числа можно проверить и логически, проверяя младший разряд его бинарного значения и тоже будет работать.

Не будет, например, 4.3 будет считаться чётным числом, очевидно нужно также было упомянуть про ограничение типом BigInt, только тогда твоя проверка будет правильна!

рони, в сообщении №9 возможны ложноположительные срабатывания, правильные решения — № 2 и 5.

Error, просто, интересно и правильное решение!

Цитата:

Сообщение от user2020
doubled.push(arr[i] %2===0 ? arr[i] * 2 : arr[i]); хотел уточнить, а вот так не правильно,вроде так проходит?

user2020, да, так тоже возможно и правильное вычисление.


Часовой пояс GMT +3, время: 22:26.