23.05.2020, 19:25
|
Новичок на форуме
|
|
Регистрация: 23.05.2020
Сообщений: 6
|
|
Как умножить в массиве только нечётные числа?
Добрый день! подскажите? как умножить в массиве только чётные числа на 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.
|
|
23.05.2020, 19:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от 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]))
|
|
23.05.2020, 19:39
|
Новичок на форуме
|
|
Регистрация: 23.05.2020
Сообщений: 6
|
|
Спасибо! да я неправильно описал, только чётные *2 имел ввиду
|
|
23.05.2020, 20:01
|
Новичок на форуме
|
|
Регистрация: 23.05.2020
Сообщений: 6
|
|
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от user2020
|
только чётные
|
doubled.push(arr[i] % 2 ? arr[i] : arr[i] * 2 );
|
|
23.05.2020, 21:24
|
Новичок на форуме
|
|
Регистрация: 23.05.2020
Сообщений: 6
|
|
Сообщение от рони
|
doubled.push(arr[i] % 2 ? arr[i] : arr[i] * 2 );
|
doubled.push(arr[i] %2===0 ? arr[i] * 2 : arr[i]); хотел уточнить, а вот так не правильно,вроде так проходит?
|
|
23.05.2020, 22:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от user2020
|
вот так не правильно
|
Правильно, но "букв" больше. Четность числа можно проверить и логически, проверяя младший разряд его бинарного значения и тоже будет работать.
|
|
24.05.2020, 14:55
|
|
Интересующийся
|
|
Регистрация: 30.04.2020
Сообщений: 17
|
|
function doubleEveryEven (arr){
return arr.map(n=>n+n*(!(n%2)))
}
|
|
24.05.2020, 15:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
function doubleEveryEven (arr){
return arr.map(n=>n * (2 - (n & 1)))
}
console.log(doubleEveryEven([11,0,9,3,10,4]))
|
|
24.05.2020, 21:34
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от laimas
|
Четность числа можно проверить и логически, проверяя младший разряд его бинарного значения и тоже будет работать.
|
Не будет, например, 4.3 будет считаться чётным числом, очевидно нужно также было упомянуть про ограничение типом BigInt, только тогда твоя проверка будет правильна!
рони, в сообщении №9 возможны ложноположительные срабатывания, правильные решения — № 2 и 5.
Error, просто, интересно и правильное решение!
Сообщение от user2020
|
doubled.push(arr[i] %2===0 ? arr[i] * 2 : arr[i]); хотел уточнить, а вот так не правильно,вроде так проходит?
|
user2020, да, так тоже возможно и правильное вычисление.
|
|
|
|