Непонимание функций высшего порядка в Javascript.Получение ошибки - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь заставить эту программу использовать эти функции для вывода N числа совершенных степеней с использованием функций более высокого порядка.Я поставил себя в тупик, и теперь, когда я печатаю свою функцию, я получаю массив NaN, который является длиной моего ввода 'P'.Это работает близко к тому, что мне нужно, но я не могу обойти ошибку.Буду признателен за любую помощь.

Пример вывода будет, если я введу: perfectpower (5,3);Я бы увидел:

5, 25, 125

   power = (N, P) => {

    return Math.pow(N, P);
}


function each(A, func) {

    for (var i = 0; i < A.length; i++) {
        A[i] = func(A[i]);
    }
    return A;
}


function sequence(N) {

    return Array(N).fill().map((_, idx) => idx + 1)

}


perfectpower = (N, P) => {

    return (each(sequence(P), power))

}

console.log(perfectpower(5,3));
console.log(sequence(5))
console.log(power(5,2))

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

const power = (N) => (P) => {

    return Math.pow(N, P);
}


function each(A, func) {

    for (var i = 0; i < A.length; i++) {
        A[i] = func(A[i]);
    }
    return A;
}


function sequence(N) {

    return Array(N).fill().map((_, idx) => idx + 1)

}


const perfectpower = (N, P) => {

    return (each(sequence(P), power(N)))

}

console.log(perfectpower(5,3));
0 голосов
/ 24 сентября 2019

Вы не передали второй аргумент при вызове func(), то есть функции power, которая требует 2 параметра, поэтому она генерирует значения NaN.

  power = (N, P) => {

    return Math.pow(N, P);
}


function each(A, func, pow) {

    for (var i = 0; i < A.length; i++) {
        A[i] = func(A[i], pow);
    }
    return A;
}


function sequence(N) {

    return Array(N).fill().map((_, idx) => idx + 1)

}


perfectpower = (N, P) => {

    return (each(sequence(N), power, P))

}

console.log(perfectpower(5,3));
console.log(sequence(5))
console.log(power(5,2))
0 голосов
/ 24 сентября 2019

Вы не передаете N через эту цепочку, поэтому Math.pow в конечном итоге получает только один из двух аргументов, в которых он нуждается.Я вижу, когда я набирал это, кто-то другой опубликовал код, чтобы выполнить то, что вам нужно.

...