Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组助手javascript练习_Javascript_Arrays_Function_Helper_Helpers - Fatal编程技术网

数组助手javascript练习

数组助手javascript练习,javascript,arrays,function,helper,helpers,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]);

我试图解决一个关于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());
var数=[1,2,3,4,5];
函数平方(){
var arraySquare=[];
对于(i=0;i
出于某种原因,square()和cube()函数会将新数组中的最后一个元素推送两次。你知道为什么会这样吗? 除此之外,代码似乎工作得很好。如果您注意到代码中的任何其他问题,请提及


任何帮助都将不胜感激

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

arrayCube[i] = numbers[i] * numbers[i] * numbers[i];
arrayCube.push(arrayCube[i]);
你或许应该做:

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

问题就在这里

arraySquare[i] = numbers[i] * numbers[i];
arraySquare.push(arraySquare[i]);
您将对数组进行两次更新,您的函数不只是添加一个额外的最终数字,而是添加两个数字,一个在
i
处,一个在
i+1
处,一个在
i+1
处,在下一次迭代中被覆盖,这就是为什么只有最后一个保留下来


您应该只检查第一行的平方函数。这对我有用

var数=[1,2,3,4,5];
函数平方(){
var arraySquare=[];var a;
对于(i=0;iconsole.log(square())哦,天哪……所有这些问题都可以通过简单的方法解决,而且不会有如此奇怪的错误。@Xufox确实如此,但它一定超出了exercice@Xufox事实上,我仍然是Javascript的新手,而且我几乎没有使用过map和filter。还是非常感谢你的评论和时间!