【发布时间】:2016-10-04 21:51:08
【问题描述】:
我被指示创建一个函数,该函数从数组中获取值并对每个值求平方,并将数字记录到控制台。我尝试了两种方法,目前都没有:
第一次尝试:
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,因为newArray(由函数返回)的值不是undefined。但是,最简单的解决方案是numbers.map(x => x * x)。 -
你不想在循环之后返回,而不是在里面吗?
-
第一次尝试:在您完成数组处理之前,您是
returning。为什么将numbers分配给newArray.push(...)?push将项目添加到数组中,此处无需使用返回值。最后,您将调用squareAllinside ofsquareAll。这将永远运行。 -
[2, 7, 9, 25].map(a=>console.log(a**2)) -
第二次尝试如此接近。在最后一行发送
numberssquareAll函数而不是空数组...和newArray.push(numbers[i] * numbers[i])... Err 实际上也许您在第一次尝试时更接近。
标签: javascript arrays function loops