【问题标题】:Array Helpers javascript exercise数组助手 javascript 练习
【发布时间】:2018-09-15 20:03:32
【问题描述】:

我正在尝试解决一个关于 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() 函数将新数组中的最后一个元素推入两次。你知道为什么会发生这种情况吗? 除此之外,代码似乎工作得很好。如果您在代码中发现任何其他问题,请提及!

任何帮助将不胜感激!

【问题讨论】:

  • 天哪……所有这些都可以通过mapreducefilter 轻松解决,而不会出现这些奇怪的错误。
  • @Xufox 确实,但它必须超出练习范围
  • @Xufox 事实是,我还是个 Javascript 新手,几乎没有使用过 map 和 filter。仍然非常感谢您的 cmets 和您的时间!

标签: javascript arrays function helper helpers


【解决方案1】:

检查了 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());

希望这对这两种功能都有效。

问候, 埃比·J

【讨论】:

    【解决方案2】:

    问题出在这里

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

    您将数组更新两次,您的函数不只是添加一个额外的最终数字,而是添加两个数字,一个在i,一个在i+1,每次,一个在i+1覆盖下一次迭代,这就是为什么只有最后一个保留。

    你应该只保留第一行

    【讨论】:

      【解决方案3】:

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

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

      你可能应该这样做:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多