数组助手javascript练习

时间:2018-04-05 21:31:37

标签: javascript arrays function helper helpers

我正在尝试在Javascript中解决关于数组助手的练习,这是我的代码。

var numbers = [1, 2, 3, 4, 5];

function square() {
    var arraySquare = [];
    for (i = 0; i < numbers.length; i++) {
        arraySquare[i] = numbers[i] * numbers[i];
        arraySquare.push(arraySquare[i]);
    }
    return arraySquare;
}
console.log(square());

function cube() {
    var arrayCube = [];
    for (i = 0; i < numbers.length; i++) {
        arrayCube[i] = numbers[i] * numbers[i] * numbers[i];
        arrayCube.push(arrayCube[i]);
    }
    return arrayCube;
}
console.log(cube());

function arrayAverage() {
    var sum = 0;
    var average = 0;
    if (numbers === []) {
        return NaN;
    }
    else {
        for (i = 0; i < numbers.length; i++) {
            sum = sum + numbers[i];
        }
        average = sum / i;
    }
    return average;
}
console.log(arrayAverage());

function arraySum() {
    var sum = 0;
    for (i = 0; i < numbers.length; i++) {
        sum = sum + numbers[i];
    }
    return sum;
}
console.log(arraySum());

function even() {
   var arrayEven = [];    
   for (i = 0; i < numbers.length; i++) {
      if (numbers[i] % 2 === 0) {
          arrayEven.push(numbers[i]);
      } 
   }
   return arrayEven;
}
console.log(even());

function odd() {
    var arrayOdd = [];
    for (i = 0; i < numbers.length; i++) {
        if (numbers[i] % 2 !== 0) {
            arrayOdd.push(numbers[i]);
        }
    }
    return arrayOdd;
}
console.log(odd());

由于某种原因,square()和cube()函数会将新数组中的最后一个元素推送两次。你知道为什么会这样吗? 除此之外,代码似乎工作得很好。如果您发现代码中有任何其他问题,请提及它!

任何帮助都将非常感谢!

3 个答案:

答案 0 :(得分:1)

因为您正在设置i元素,之后您将新值推送到数组:

arrayCube[i] = numbers[i] * numbers[i] * numbers[i];
arrayCube.push(arrayCube[i]);

您应该这样做:

arrayCube.push(numbers[i] * numbers[i] * numbers[i]);

答案 1 :(得分:0)

问题在于这里

arraySquare[i] = numbers[i] * numbers[i];
arraySquare.push(arraySquare[i]);

您要更新数组两次,您的功能不仅仅是添加额外的最终数字,而是每次添加两个数字,一个在i,一个在i+1i+1的一个人会覆盖下一次迭代,这就是为什么只有最后一次停留的原因。

你应该保留第一行

答案 2 :(得分:0)

检查Square功能。它对我有用。

var numbers = [1, 2, 3, 4, 5];

function square() {
    var arraySquare = []; var a ;
    for (i = 0; i < numbers.length; i++) {
        a = numbers[i] * numbers[i];
        arraySquare.push(a);
    }
    return arraySquare;
}
console.log(square());

希望这适用于这两个功能。

此致 Eby J