javascript函数,它将数组作为输入,将每个数组元素增加1,并返回增加值的新数组

javascript function that takes array as input, increases each array element by 1 and returns new array with increased values not working

本文关键字:数组 增加值 返回 新数组 函数 输入 数组元素 javascript 增加      更新时间:2023-09-26

我对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]'

只有阵列中的第一个元素被增加并打印。我的循环肯定出了问题,但我想不通。请帮帮我!

您的代码有几个问题:

  1. 在您的newArray.push调用中,您正在推送整个数组+1,而不是单个项+1
  2. 您在循环中返回,这意味着它根本不是一个循环,只运行一次

这是您的代码和修复到位:

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);

你也可以用更少的代码来使用地图功能:

var nuArray = [23, 34, 56, 67].map(function(item) {
    return item + 1;
});

您需要从数组中获取元素:

newArray.push(myArray[i] + 1);

您可能想要

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);
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);

.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);

您访问的是数组本身,而不是正在循环的项。

在环路内使用newArray.push(myArray[i] + 1);而不是newArray.push(myArray + 1);

此外,return语句应该在for循环之外

演示