JavaScript:是否可以使用forEach更新数组项的值?

时间:2019-02-26 12:04:04

标签: javascript arrays foreach

我想循环显示一个数字数组,如果这些数字中的任何一个是一位数字,请在其前面添加一个0,例如1变成01

我可以使用for循环来执行此操作,但想知道我是否可以使用forEach,因为它看起来更整洁。

有人知道这是否可以完成吗?

到目前为止,我的代码:

  numArr.forEach(function(item) {
    if (item < 10) {
      item = '0' + item; // How do I update this value in array?
    }
  });

5 个答案:

答案 0 :(得分:1)

您将 index 作为第二个参数传递给事件处理程序函数,并使用该 index 修改数组中的项目:

numArr.forEach(function(item, i) {
  if (item < 10) {
    numArr[i] = '0' + item; // How do I update this value in array?
  }
});

您也可以使用map()

numArr = numArr.map(function(item, i) =>  {
  if (item < 10) {
    item = '0' + item; // How do I update this value in array?
  }
  return item;
});

答案 1 :(得分:1)

您可以使用Array#map映射数组,并将该值转换为具有所需长度和值的字符串和填充。

var numArr = [1, 2, 3, 10],
    zeroes = numArr.map(v => v.toString().padStart(2, '0'));

console.log(zeroes);

答案 2 :(得分:1)

如果要在适当位置修改数组,则可以使用Array.forEach(),并且必须为此使用索引,这是回调的第二个参数。

但是,如果要生成一个新数组,建议使用Array.map(),它会为每次迭代返回一个新项目:

const numArr = [-1, 0, 1, 2, 3, 10, 11, 12, 100, 3.14];

const prefix = x => {
  const s = `0${x.toString().replace('-', '')}`;
  return s.split('.')[0].length >= 3 ? `${x}` : `${x < 0 ? '-' : ''}${s}`;
}

const result = numArr.map(prefix);

numArr.forEach((x, i) => numArr[i] = prefix(x));

console.log(result);
console.log(numArr);

答案 3 :(得分:1)

您可以使用map

var numArr = [1, 2, 3,10,11];
numArr = numArr.map(function(item) {
   if (item < 10) {
      return item = '0' + item;;
    }
  return item.toString() ;
});
console.log(numArr);

另一种选择是将forEach与两个参数一起使用(第二个参数将是索引)

var numArr = [1, 2, 3,10,11];
numArr.forEach(function(item,index) {
   if (item < 10) {
      numArr[index] = '0' + item;
    }
  
});

console.log(numArr);

答案 4 :(得分:0)

您可以使用padStartmap

var cont = [1, 2, 3, 4, 5, 6, 7, 10, 11, 12];
var result = cont.map((o)=>{ return o.toString().padStart('2', 0);});

console.log(result);