Моя функция не возвращает ожидаемый результат - PullRequest
0 голосов
/ 10 июля 2020

Я написал функцию, которая должна возвращать, если сумма первой половины цифр равна сумме второй половины. Что не так с моим кодом? спасибо за помощь.

function isLucky(n) {
var digits = (n).toString(10).split("").map(Number)
var k = digits.length; 
var a = 0;
var b = 0;
for(let x = 0; x<k/2; x++){
    a+=n[x];
}
for(let x = k/2; x<k; x++){
    b+=n[x];
}
return (a===b); 
}

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Вот небольшой код, который сравнивает суммы цифр 1-й и 2-й половин числа:

Попробуйте. Он напечатает две половины и результат сравнения.

Вы можете преобразовать код в простую функцию.

Надеюсь, это поможет.

let MyNumber = 1234.5678;                     // the Number
MyNumber = (""+MyNumber).split(".");          // Split the number
let first_half=0, Second_half=0, a;           // Some vars
a=[...MyNumber[0]].map(e => first_half+=+e);  // Sum the first half
a=[...MyNumber[1]].map(e => Second_half+=+e)  // Sum the 2nd half

console.log(first_half, Second_half)          // Print 1st and 2nd halves

console.log(first_half == Second_half)       // Test if equal
0 голосов
/ 10 июля 2020

Вы не можете получить доступ к цифрам числа, как к массиву. Сначала преобразуйте его в строку, а затем используйте синтаксис распространения, чтобы преобразовать его в массив цифр.

function isLucky(n) {
    var digits = [...(n).toString(10)]
    var k = digits.length; 
    var a = 0;
    var b = 0;
    for(let x = 0; x<k/2; x++){
        a += +digits[x];
    }
    for(let x = Math.floor(k/2); x<k; x++){
        b += +digits[x];
    }
    return (a===b); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...