не могу решить вопрос. Суть, нужно написать функцию которя будет принимать число и значение 'odd' или 'even' И так же посчитает всю сумму четных и нечетных цифр в зависимости от odd или even . Вот так должно быть : пусть я ввел 123456 и odd - соответсвеноо в консоле у меня должно появиться --- 1 Нечетные - 1, 3 , 5. --- 2 Сумма - 9. И тоже самое с even. Я написал код, который работает, но я там очень сильно намудрил и запутался вообще.
function summ (number, evenOrOdd ) {
let resultOdd = '';
let resultEven = '';
let resultCycleOdd = 0;
let resultCycleEven = 0;
if (evenOrOdd === 'odd') {
evenOrOdd = number.toString();
for (let i = 0; i < evenOrOdd.length; i++) {
if (/[1357]/.test(evenOrOdd[i])) {
resultOdd = resultOdd + evenOrOdd[+i] ;
}
number = +resultOdd;
let sum = 0;
while (number > 0) {
sum += number % 10;
number = Math.floor(number/10);
resultCycleOdd = sum;
}
}
console.log('Не парні' + ' ' + resultOdd);
console.log('Сумма'+ ' ' +resultCycleOdd);
}
if (evenOrOdd === 'even') {
evenOrOdd = number.toString();
for (let i = 0; i < evenOrOdd.length; i++) {
if (/[2468]/.test(evenOrOdd[i])) {
resultEven = resultEven + evenOrOdd[i] ;
}
number = +resultEven;
let sum = 0;
while (number > 0) {
sum += number % 10;
number = Math.floor(number/10);
resultCycleEven = sum;
}
}
console.log('Парні' + ' ' +resultEven);
console.log('Сумма'+ ' ' +resultCycleEven);
}
}
summ(123456789, 'even');
Освобождаем код от ненужных переменных и приведений к строке
function summ(num, evenOrOdd) {
var resultLabel = [];
var resultValue = 0;
var isEven = evenOrOdd === 'even';
while (num > 0) {
var lastDigit = num % 10
if ( (isEven && ( lastDigit % 2 === 0)) || (!isEven && (lastDigit % 2 === 1))) {
resultLabel.push(lastDigit);
resultValue += lastDigit;
num = (num - lastDigit) / 10;
}
}
console.log(isEven ? 'Парні: ' : 'Непарні: ', resultLabel.join(', '));
console.log('Сума: ', resultValue );
}
summ(12345, 'even')
summ(12345, 'odd')
За основу взял код из ответа Ofer.
Немного функциональщины:
sum = (nums, type) => (nums + '').split('').filter(e => type === 'even' && e % 2 === 0 || type === 'odd' && e % 2 === 1).reduce((a, c) => a + (+c), 0);
console.info(sum(123456, 'even'), // 2 + 4 + 6 = 12
sum(123456, 'odd')); // 1 + 3 + 5 = 9
function summ(num, evenOrOdd) {
var resultLabel = [];
var resultValue = 0;
var numStr = num.toString();
var numLength = numStr.length;
var isEven = evenOrOdd === 'even';
for(var i = 0; i < numLength; i++) {
if ( (isEven && (i % 2 === 1)) || (!isEven && (i % 2 === 0))) {
resultLabel.push(numStr[i]);
resultValue += +numStr[i];
}
}
console.log(isEven ? 'Парні: ' : 'Непарні: ', resultLabel.join(', '));
console.log('Сума: ', resultValue );
}
summ(12345, 'even')
summ(12345, 'odd')
function getSum(string){
let sum =0;
for(s of string){
sum= isNaN(parseInt(s)) ? sum+0:sum+parseInt(s);
}
return sum;
}
function getNumbers(numbers,order){
var num = String(numbers).split(""),
res = order+' ';
num.forEach(function(e,k){
if (order=="odd"){
if ((e % 2) === 1) {
res += e;
}
}
else if (order=="even"){
if ((e % 2) === 0) {
res += e;
}
}
});
res += ', sum = '+getSum(res);
return res;
}
console.log(getNumbers(1234567,'odd'));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть большой файл с текстом:
В классических компонентах можно было не только переопределять, но и расширять функции