JavaScript array.forEach(()) - 在新数组中更改并返回新数字

时间:2017-02-01 01:17:34

标签: javascript arrays

我想返回一个数组,changeArray,其中每个元素都在“array”+ 2中。

我得到一个空的“changeArray。”

var array = [1, 2, 3, 4];

function changeArray(array){
  var newNums = [];
  array.forEach(function(number){
    number = number + 2;
    console.log(number);
    //return(newNums);
  });return(newNums);
}changeArray(array);

感谢大家的出色答案。他们真的有帮助。我应该使用.forEach并“返回”新数组。我同意.map会是最好的,但是......非常感谢!!

2 个答案:

答案 0 :(得分:5)

Array.map将成为该工作的合适工具



var array = [1, 2, 3, 4];
    
var newNums = array.map(x => x + 2);

console.log(newNums);




代码不起作用的原因是因为你无法真正从forEach返回,你必须在每次迭代中推送到数组



var array = [1, 2, 3, 4];

function changeArray(array) {
  var newNums = [];
  
  array.forEach(function(number) {
    newNums.push( number + 2 );
  });
  
  return newNums;
}

var result = changeArray(array);

console.log(result);




答案 1 :(得分:0)

此任务的正确功能确实是.map()

但你仍然可以通过一些修改来使用你的功能。



    var array = [1, 2, 3, 4];

    function changeArray(inputArray){
      var newNums = inputArray.slice();
      newNums.forEach(function(number, index){
        newNums[index] = number + 2;
      });
  return(newNums);
    }
console.log(changeArray(array));




<强>解释

首先,您将changeArray()编码为始终返回一个空数组。

请参阅var newNums = [];,然后return(newNums);

forEach()变量使用array时。

其次,您应该详细了解forEach() here

如果您注意到,我使用.slice()inputArray的值复制到newNums

确保inputArray不被功能修改是一种良好做法。