【问题标题】: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 将在这里工作。虽然你不需要把它弄得这么复杂。

两个简单的方法:

  1. 整数除法:除以 1000000 以删除最后 6 位。

console.log(Math.floor(800000000 / 1000000)) // 800
console.log(Math.floor(699000000 / 1000000)) // 699
  1. 字符串切片:复制除最后 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"));       // ""

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2019-04-14
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多