2个平方数之间的差异

时间:2017-08-18 17:30:51

标签: javascript

How do I add commas in between the inputs to make the function work?

 function square(num) {
    var items=str.split("")
    return Math.abs(num*num - num2*num2)
  }

 square(4 2);

3 个答案:

答案 0 :(得分:3)

您可以使用

function square(num, num2) {
  return Math.abs(num*num - num2*num2);
}

console.log(square(4, 2));
console.log(square(2, 4));

答案 1 :(得分:0)

您可以使用数学绝对函数:

function square(num, num2) {
  var sq1 = num * num,
      sq2 = num2 * num2;
  return Math.abs(sq2-sq1);
}

要处理您未在问题中包含的问题,可以将字符串传递给square函数,并按以下方式处理:

function square(NUMBERS_STRING) {
  var numbers = NUMBERS_STRING.split(" "),
      sq1 = numbers[0] * numbers[0],
      sq2 = numbers[1] * numbers[1];
  return Math.abs(sq2-sq1);
}

请不要将square("4 2")square(4 2)混淆。

第二个是无效的javascript。

答案 2 :(得分:0)

值得指出的是,将此功能称为“方形”可能是一个坏主意。如果有人不习惯你的代码并且他们看到了这个功能,他们是否会知道它的作用是什么?也许diffOfSquares(num,num2)?

我的建议是拥有在99%的用例中可重用的真实数学函数:

function square(num, num2) {
  num *= num;
  num2 *= num2;
  return Math.abs(num-num2);
}

然后为你的超载调用上面的内容。这样做的原因是,如果某些事情发生并且函数square(num,num2)中的基础逻辑需要修改,那么你只能在一种情况下修改它而不是它和其他所有重载。以下是我为您目前的情况做的事情:

function square(str) {
  var items = str.split(" ");
  return square(items[0], items[1]);
}

可选地,但是为了可重用性,如果我们得到一个用于管道分隔的字符串,将来会发生什么?逗号分隔?我不想打破假定间距的代码,所以我可能会修改该函数:

function square(str, delim = " ") {
  var items = str.split(delim);
  return square(items[0].trim(), items[1].trim());
}

所以,如果我打电话,我可以这样做:

square("4 2", " "); // space delimited
square("4 2"); // space delimited for legacy items
square("4, 2", ","); // comma delimited
square("4|2", "|"); // pipe delimited