How to remove price zeros? [closed]

how to remove price last six zeros in react native

original price – ₹699 original price – ₹800

API response – ₹699000000 API response – ₹800000000

I try this. it removes all zeros.

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;}
  }

Answer

The issue with your code is the condition, it processes all digits in reverse until the first non-zero character, without limit. You could keep a loop counter and not iterate more than 6 times; a for-loop with appropriate exit condition would work here. Though you don’t need to make it this complicated.

Two simple methods:

  1. Integer division: divide by 1000000 to remove the last 6 digits.

console.log(Math.floor(800000000 / 1000000)) // 800
console.log(Math.floor(699000000 / 1000000)) // 699
  1. String slice: copy all but the last 6 characters.

console.log("800000000".slice(0, -6)) // 800
console.log("699000000".slice(0, -6)) // 699

If you need a more general/unopinionated solution, use a for-loop to check each character from the end for non-zero-ness, and slice that amount, up to 6|max from the string and return.

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"));       // ""