首页>Program>source

我有这个三元运算符

function digPow(n, p){
  return Number.isInteger((""+n).split("").map((num,index) => Math.pow(parseInt(num),(p+index))).reduce((a, b) => a + b, 0)/n) ? (""+n).split("").map((num,index) => Math.pow(parseInt(num),(p+index))).reduce((a, b) => a + b, 0)/n : -1;
}

如您所见,这是一个非常长的1班轮.我的问题是,如何调用Number.isInteger()中的值,这样我就不必仅在1行中为三元运算符重复它。

这是我需要来自以下代码的代码:-

   (""+n).split("").map((num,index) => Math.pow(parseInt(num),(p+index)))
      .reduce((a, b) => a + b, 0)/n

这有语法吗? 我对JS比较陌生

EDIT: 主要的问题实际上是:"是否可以在不使用变量的情况下从三元运算符内部调用值"

EDIT-2: 对不起,我的编码不好.这是问我问题的一种简单方法

const x = 6
const y = 3
console.log(Number.isInteger(x+y/3) ? x+y/3 : -1)

是否可以调用x + y / 3值而不重复或不创建新变量?

最新回答
  • 1月前
    1 #

    不确定是否执行函数或应该采用什么参数,但是 您可以使用自执行匿名函数 aka IIFE(立即调用函数表达式)。

    让我们从格式化当前的内容开始:

    const digPow = (n, p) => Number.isInteger(
      ("" + n)
      .split("")
      .map((num, index) => Math.pow(parseInt(num), (p + index)))
      .reduce((a, b) => a + b, 0) / n
    )
      ? ("" + n)
        .split("")
        .map((num, index) => Math.pow(parseInt(num), (p + index)))
        .reduce((a, b) => a + b, 0) / n
      : -1;
        
    console.log(digPow(6, 3)); // 36
    

    看起来这部分在条件之内,如果结果是整数,也返回:

    ("" + n)
      .split("")
      .map((num, index) => Math.pow(parseInt(num), (p + index)))
      .reduce((a, b) => a + b, 0) / n
    

    您可以将逻辑简化为以下(伪代码):

    const digPow = (x => Number.isInteger(x) ? x : -1)(split/map/reduce/divide);
    

    让我们将其传递给IIFE:

    const digPow = (n, p) => (
      (value) => Number.isInteger(value) ? value : -1)
      (("" + n)
        .split("")
        .map((num, index) => Math.pow(parseInt(num), (p + index)))
        .reduce((a, b) => a + b, 0) / n);
        
    console.log(digPow(6, 3)); // 36
    

  • python:TypeError:列表索引必须是整数,必须是整数,而不是元组
  • css:如何添加单独的背景动画?