Así que tengo una función que quería escribir como un código de una sola línea para el problema en codewars [problem link] .
Aquí está el código que tengo hasta ahora:
export class G964 { public static digPow = (n: number, p: number) => ((String(n).split('').reduce((sum: number, d: string) => sum + (+d) ** p++, 0) / n) | 0) || -1; } El problema aquí es que n | 0 devuelve el valor redondeado, pero lo que estoy buscando es algo que pueda usarse para verificar si el valor es un número entero (no tiene recordatorio) y si lo es, devuelve el valor, sin embargo, si no lo es, entonces devuelve false o algo más, eso me permitirá devolver -1 .
El punto principal es que no quiero almacenar ni duplicar (String(n).split('').reduce((sum: number, d: string) => sum + (+d) ** p++, 0) / n) como un valor.
No sé si puede evitar almacenar el valor, pero aún así es bastante limpio:
public static digPow = (n: number, p: number) => (n=(String(n).split('').reduce((sum: number , d: string) => sum + (+d) ** p++, 0) / n), n%1 ? -1:n);