Codewars Challenge - 积极的数量/负数的总和

时间:2017-02-12 17:02:16

标签: javascript arrays count

我的代码有效,但是为了通过挑战,它没有被接受。对我所做错的任何帮助都将不胜感激。

挑战说明:

给定一个整数数组。 返回一个数组,其中第一个元素是正数的数量,第二个元素是负数的总和。 如果输入数组为空或null,则返回一个空数组:

C#/Java: new int[] {} / new int[0];
C++: std::vector<int>();
JavaScript/CoffeeScript/PHP/Haskell: [];
Rust: Vec::<i32>::new();

注意! 不应更改传递的数组。在这里阅读更多。*

例如:

输入 [1,2,3,4,5,6,7,8,9,10,-11,-12,-13,-14,-15]

返回 [10,-65]。

我的代码:

function countPositivesSumNegatives(input) {

if (input.length < 1){
  return [];
}

var newArray = [0, 0];


for (var i = 0; i < input.length; i++){

  if (input[i] > 0)
    {
    newArray[0] += 1;
    }

  else {
    newArray[1] += input[i];
  }

  }
return newArray;
}

3 个答案:

答案 0 :(得分:1)

当挑战明确要求“如果输入数组为空或为空,返回空数组”时,您不会检查null。请考虑更改代码如下

if (input == null || input.length < 1){
  return [];
}

答案 1 :(得分:0)

此代码适用于我(使用JavaScript)

function countPositivesSumNegatives(input) {
    if (input === null || input.length < 1) {
        return [];
    }
    var array = [0, 0];

    for(var i = 0; i < input.length; i++) {
        if(input[i] <= 0) {
            array[1] += input[i];
      } else {
            array[0] += 1;
      }
    }
    return array;
}

所以,你需要检查输入=== null(并返回空数组),如果输入[i]&lt; = 0(负数之和)

答案 2 :(得分:0)

这是我在Javascript中使用的一种方法,因此也许您也可以借鉴一些想法

function countPositivesSumNegatives(input) {
if (input == null || input.length < 1){
  return [];
}
var sum =0;
var pos =[];

for (var i=0; i<input.length; i++){

if(input[i]>0){
pos.push(input[i]);

} else{
sum += input[i];

}
}
    return [pos.length, sum];
}