我有一个带有网格的页面,其中保存了用户号码。它具有以下模式-每个数字以逗号后的3位数字结尾。看起来不太好,例如当用户输入为
123,450
123,670
123,890
最好在逗号后只包含两个数字,因为最后的
0
绝对毫无意义且多余。仅当数组中的至少一个元素不以
0
结尾时,它仍应具有3位数字的方式例如:
123,455
123,450
123,560
在这种情况下,数组的第一个元素的最后一位不等于
0
,因此所有元素都应具有3位。相同的故事,带有2个或1个零零是多余的:
123,30
123,40
123,50
零是必需的:
123,35
123,40
123,50
问题是如何以编程方式实现它?我开始是这样的:
var zeros2Remove = 0;
numInArray.forEach(function(item, index, numInArray)
{
var threeDigitsAfterComma = item.substring(item.indexOf(',') + 1);
for(var j = 2; j <= 0; j--)
{
if(threeDigitsAfterComma[j] == 0)
{
zeros2Remove =+ 1;
}
else //have no idea what to do..
}
})
好吧,在我的实现中,我不知道该怎么做,因为我必须遍历每个元素,但是如果至少一个数字的最后一位等于零,则将其中断。为了这样做,我必须中断外循环,但不知道如何,而且我绝对确定我不必...
最佳答案
我认为以下代码正是您想要的代码,请操纵数字并查看更改:
var arr = ["111.3030", "2232.0022", "3.001000", "4","558.0200","55.00003000000"];
var map = arr.map(function(a) {
if (a % 1 === 0) {
var res = "1";
} else {
var lastNumman = a.toString().split('').pop();
if (lastNumman == 0) {
var m = parseFloat(a);
var res = (m + "").split(".")[1].length;
} else {
var m = a.split(".")[1].length;
var res = m;
}
}
return res;
})
var maxNum = map.reduce(function(a, b) {
return Math.max(a, b);
});
arr.forEach(function(el) {
console.log(Number.parseFloat(el).toFixed(maxNum));
});