我对javascript完全陌生。我第一次学习如何编写函数,并且我已经坚持使用这个函数了。请问你能帮我弄清楚为什么我的for循环只是循环在数组的第一个元素而不是其他元素。
感谢您的帮助。
参见代码:
我试图编写一个函数,将一个数字数组作为输入,并返回一个包含输入数组中每个数字的新数组,增加一个。
function incrementEach (myArray) {
var newArray = [];
for (var i = 0; i < myArray.length; i++) {
newArray.push(myArray + 1);
return newArray;
};
};
var nuArray = incrementEach ([23, 34, 56, 67]);
log (nuArray);
The result I get after running this code is: '[24]'
只增加并打印数组中的第一个元素。我的循环肯定有问题,但我无法弄明白。请帮帮我!
答案 0 :(得分:1)
您的代码有几个问题:
以下是修补程序的代码:
function incrementEach (myArray) {
var newArray = [];
for (var i = 0; i < myArray.length; i++) {
newArray.push(myArray[i] + 1);
};
return newArray;
};
var nuArray = incrementEach ([23, 34, 56, 67]);
log(nuArray);
您还可以使用map函数以更少的代码执行此操作:
var nuArray = [23, 34, 56, 67].map(function(item) {
return item + 1;
});
答案 1 :(得分:0)
你需要从数组中获取元素:
newArray.push(myArray[i] + 1);
答案 2 :(得分:0)
您正在访问数组本身而不是正在循环的项目。
在循环中使用newArray.push(myArray[i] + 1);
而不是newArray.push(myArray + 1);
此外,return
语句应该在for循环之外
答案 3 :(得分:0)
你可能想要
function incrementEach (myArray) {
var newArray = [];
for (var i = 0; i < myArray.length; ++i) {
newArray.push(myArray[i] + 1); // i-th element
}
return newArray; // Return at the end
}
然而,它会更简单:
[23, 34, 56, 67].map(n => n+1);
答案 4 :(得分:0)
var arr
function incrementEach (myArray) {
for (var i = 0; i < myArray.length; i++) {
myArray[i] += 1
};
return myArray
};
arr = incrementEach([23, 34, 56, 67]);
log(arr);
答案 5 :(得分:0)
.map()
的最佳用例。这会创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。
var increased = [1, 2, 3].map(function(item, index) {
return item + 1;
});
功能可能如下所示:
function increaseValues(arr, amount) {
return arr.map(function(item) {
return item + amount;
});
}
// increase array values by 5
increaseValues([1,2,4], 5);