Javascript将数组中的所有元素都无效

时间:2018-03-21 17:48:38

标签: javascript arrays foreach

function square(arr) {
   var result=[].concat(arr);
   result.forEach(function(i){
      i=i*i;
      console.log(i);
   })
   return result;
 }
var arr=[1,2,3,4];
console.log(square(arr))

任务是对数组中的所有元素进行平方,现在我的输出是原始数组。我想知道为什么。

P.S。第一个console.log给了我output1; 4; 9; 16。 第二个console.log输出[1,2,3,4]

3 个答案:

答案 0 :(得分:2)

您可以为单个值定义一个方形函数作为Array#map的回调以获取平方数组。

function square(v) {
    return v * v;
}

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

console.log(array.map(square));

答案 1 :(得分:1)

forEach正在迭代数组,但它没有返回anyvvalue.Use map函数,它将返回一个更新结果的新数组

function square(arr) {
  return arr.map(function(i) {
    return i * i;
  })

}
var arr = [1, 2, 3, 4];
console.log(square(arr))

如果您仍打算使用forEach推送数组中的更新值并返回该数组

答案 2 :(得分:0)

  • 将该值重新分配给i不会更新原始数组。

  • 您不需要连接该数组,只需将该数组初始化为空[]

  • 将每个方块值添加到新数组中。



function square(arr) {
  var result = [];
  arr.forEach(function(i) {
    i = i * i;
    result.push(i);
  });
  return result;
}
var arr = [1, 2, 3, 4];
console.log(square(arr))