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

时间:2016-05-03 21:09:10

标签: javascript arrays function

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

只增加并打印数组中的第一个元素。我的循环肯定有问题,但我无法弄明白。请帮帮我!

6 个答案:

答案 0 :(得分:1)

您的代码有几个问题:

  1. 在你的newArray.push调用中,你正在推动整个数组+ 1而不是单个项目+1。
  2. 你在循环中返回,这意味着它根本不是一个循环,只能运行一次。
  3. 以下是修补程序的代码:

    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循环之外

DEMO

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