我被指示创建一个函数,该函数从数组中获取值并对每个值进行平方,并将数字记录到控制台。我尝试了两种方法,到目前为止都没有这方法:
第一次尝试:
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并且不会给我一个特定的错误,所以我不确定这里有什么问题。任何解释都将不胜感激!
答案 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));