我想循环显示一个数字数组,如果这些数字中的任何一个是一位数字,请在其前面添加一个0
,例如1
变成01
。
我可以使用for
循环来执行此操作,但想知道我是否可以使用forEach
,因为它看起来更整洁。
有人知道这是否可以完成吗?
到目前为止,我的代码:
numArr.forEach(function(item) {
if (item < 10) {
item = '0' + item; // How do I update this value in array?
}
});
答案 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)