【问题标题】:How to remove price zeros? [closed]如何消除价格零点? [关闭]
【发布时间】:2021-12-06 02:56:55
【问题描述】:
如何在 react native 中删除价格最后六个零
原价 - ₹699
原价 - ₹800
API 响应 - ₹699000000
API 响应 - ₹800000000
我试试这个。它会删除所有零。
var numstr = 800000000
while (numstr[numstr.length-1] === "0") {
numstr = numstr.slice(0, -1)
if (numstr[numstr.length-1] !== "0") {break;}
if (numstr[numstr.length-3] === ".") {break;}
}
【问题讨论】:
标签:
javascript
reactjs
react-native
【解决方案1】:
您的代码的问题是条件,它会反向处理所有数字,直到第一个非零字符,没有限制。您可以保留一个循环计数器并且迭代次数不超过 6 次;具有适当退出条件的 for-loop 将在这里工作。虽然你不需要把它弄得这么复杂。
两个简单的方法:
- 整数除法:除以
1000000 以删除最后 6 位。
console.log(Math.floor(800000000 / 1000000)) // 800
console.log(Math.floor(699000000 / 1000000)) // 699
- 字符串切片:复制除最后 6 个字符之外的所有字符。
console.log("800000000".slice(0, -6)) // 800
console.log("699000000".slice(0, -6)) // 699
如果您需要更通用/无主见的解决方案,请使用 for 循环从末尾检查每个字符的非零性,并将该数量切片,最多为字符串的 6|max 并返回。
const removeUpTo6Zeros = val => {
let i;
for (i = 0; i < 6; i++) {
if (val[val.length - 1 - i] !== '0') break;
}
return i ? val.slice(0, -i) : val;
};
console.log(removeUpTo6Zeros("800000000")); // 800
console.log(removeUpTo6Zeros("699000000")); // 699
console.log(removeUpTo6Zeros("699000030")); // 69900003
console.log(removeUpTo6Zeros("699001003")); // 699001003
console.log(removeUpTo6Zeros("69900")); // 699
console.log(removeUpTo6Zeros("69")); // 69
console.log(removeUpTo6Zeros("6")); // 6
console.log(removeUpTo6Zeros("0")); // ""
console.log(removeUpTo6Zeros("00")); // ""
console.log(removeUpTo6Zeros("000")); // ""