将数组中的值平方的函数

时间:2016-10-04 21:51:09

标签: javascript arrays function loops

我被指示创建一个函数,该函数从数组中获取值并对每个值进行平方,并将数字记录到控制台。我尝试了两种方法,到目前为止都没有这方法:

第一次尝试:

var numbers = [2, 7, 13, 24];

function squareAll(numbers) {
  var newArray = [];
  for(i = 0; i < numbers.length; i++) {
    numbers = newArray.push(Math.pow(numbers[i], 2))
    return newArray;
  }
  console.log(squareAll(numbers));
}

第二次尝试:

var numbers = [2, 7, 9, 25];
var newArray = [];
var squareAll = function(numbers) {
  for(var i = 0; i < numbers.length; i++){
    newArray = [];
    newArray.push(squareAll[i] * squareAll[i])
  };
  return newArray;
};
console.log(squareAll(newArray));

当我在javascript控制台中尝试两个代码时,都返回undefined并且不会给我一个特定的错误,所以我不确定这里有什么问题。任何解释都将不胜感激!

3 个答案:

答案 0 :(得分:2)

在第一次尝试中,您将push方法分配给变量,这是一种不好的做法。其次,您在循环的第一个循环之后立即返回函数,因此您在遍历数组的所有元素之前停止循环。

在第二次尝试中,由于循环内部有newArray = [];,因此在循环的每个循环后基本上都会清除数组。因此,对于每个循环,您将在newArray中删除一个元素,然后您告诉循环清除newArray。循环将变为无限,因为newArray的长度永远不会达到numbers.length。

var numbers = [2, 7, 13, 24];
var newArray = [];

console.log(numbers.map(v => Math.pow(v, 2)));

或者:

var numbers = [2, 7, 13, 24];
var newArray = [];

for (var i = 0; i < numbers.length; i++) {
  newArray.push(Math.pow(numbers[i], 2));
}

console.log(newArray);

答案 1 :(得分:1)

为什么不使用地图

var result = [1,2,3,4,5].map(function(val){
  return Math.pow(val,2);
});

console.log(result); // [1, 4, 9, 16, 25]

答案 2 :(得分:0)

使用array.map()设置要为数组中的每个元素执行的回调函数:

var arr1 = [1,2,3,4];

function squareIt(arr) {
  return arr.map(function (x) {
    return Math.pow(x, 2);
  });
}

alert(squareIt(arr1));