Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2020, 19:25
Новичок на форуме
Отправить личное сообщение для user2020 Посмотреть профиль Найти все сообщения от user2020
 
Регистрация: 23.05.2020
Сообщений: 5

Как умножить в массиве только нечётные числа?
Добрый день! подскажите? как умножить в массиве только чётные числа на 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;
}

Последний раз редактировалось user2020, 23.05.2020 в 21:25.
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2020, 19:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,578

Сообщение от 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]))
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2020, 19:39
Новичок на форуме
Отправить личное сообщение для user2020 Посмотреть профиль Найти все сообщения от user2020
 
Регистрация: 23.05.2020
Сообщений: 5

Спасибо! да я неправильно описал, только чётные *2 имел ввиду
Ответить с цитированием
  #4 (permalink)  
Старый 23.05.2020, 20:01
Новичок на форуме
Отправить личное сообщение для user2020 Посмотреть профиль Найти все сообщения от user2020
 
Регистрация: 23.05.2020
Сообщений: 5

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;
Ответить с цитированием
  #5 (permalink)  
Старый 23.05.2020, 20:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,578

Сообщение от user2020
только чётные
doubled.push(arr[i] % 2 ? arr[i] : arr[i]  * 2  );
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2020, 21:24
Новичок на форуме
Отправить личное сообщение для user2020 Посмотреть профиль Найти все сообщения от user2020
 
Регистрация: 23.05.2020
Сообщений: 5

Сообщение от рони Посмотреть сообщение
doubled.push(arr[i] % 2 ? arr[i] : arr[i]  * 2  );
doubled.push(arr[i] %2===0 ? arr[i] * 2 : arr[i]); хотел уточнить, а вот так не правильно,вроде так проходит?
Ответить с цитированием
  #7 (permalink)  
Старый 23.05.2020, 22:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,007

Сообщение от user2020
вот так не правильно
Правильно, но "букв" больше. Четность числа можно проверить и логически, проверяя младший разряд его бинарного значения и тоже будет работать.
Ответить с цитированием
  #8 (permalink)  
Старый 24.05.2020, 14:55
Аватар для Error
Новичок на форуме
Отправить личное сообщение для Error Посмотреть профиль Найти все сообщения от Error
 
Регистрация: 30.04.2020
Сообщений: 6

function doubleEveryEven (arr){
  return arr.map(n=>n+n*(!(n%2)))
}
Ответить с цитированием
  #9 (permalink)  
Старый 24.05.2020, 15:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,578


function doubleEveryEven (arr){
  return arr.map(n=>n * (2 - (n & 1)))
}
console.log(doubleEveryEven([11,0,9,3,10,4]))
Ответить с цитированием
  #10 (permalink)  
Старый 24.05.2020, 21:34
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,673

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

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить скрипт только после того, как элемент с определенным id появляется в DOM strs Events/DOM/Window 10 26.05.2018 18:10
Как сделать клик по элементу только один раз в день Alexodiy Events/DOM/Window 7 19.01.2018 14:23
Как можно развернуть/свернуть только один блок по клику? nina_ jQuery 2 19.07.2016 13:07
Как сделать, чтобы при вводе числа в поле добавлялись разделители групп разрядов? Hurray Элементы интерфейса 13 18.02.2015 13:07
Как сделать чтобы text() брал только текст родителя без текста вложенных контейнеров? Andrey32 jQuery 3 23.05.2009 00:33