黑客排名:加减

Mos*_*eed 1 javascript

我试图找到数组中正数、负数和零的分数,但该函数没有返回任何内容。

var noOfPostive = 0;
var noOfNegative = 0;
var noOfZero = 0;

function plusMinus(arr) {
  /*
   * Write your code here.
   
   */
  var length = arr.length;

  for (var i = 0; i < arr.length; i++) {
    if (i > 0) {
      noOfPostive += 1;
    } else if (i < 0) {
      noOfNegative += 1;
    } else {
      noOfZero += 1;
    }

    var FractionOfPostive = noOfPostive / length;
    var FractionOfNegative = noOfNegative / length;
    var FractionOfZero = noOfZero / length;
    return FractionOfPostive, FractionOfPostive, FractionOfZero;

  }
}

plusMinus([-4,3,-9,0,4,1]);
Run Code Online (Sandbox Code Playgroud)

小智 8

这是一个简单而快速的解决方案:

可以使用filter函数迭代数组,仅获取满足条件的数字;正数 (n> 0)、负数 (n <0) 和中性数 (n == 0)。在同一个变量中,您可以计算返回数组的大小并将其除以原始数组的大小,这样您就得到了分数,您必须使用 toFixed(6) 将其格式化为仅 6 位小数,并在要求的格式。

function plusMinus(arr) {
    let positive = arr.filter(number => number > 0).length / arr.length;
    let negative = arr.filter(number => number < 0).length / arr.length;;
    let zeronums = arr.filter(number => number == 0).length / arr.length;;
    return console.log(positive.toFixed(6) + '\n' + negative.toFixed(6) + '\n' + zeronums.toFixed(6))
}
Run Code Online (Sandbox Code Playgroud)