如何使用 javascript 从整数中删除特定数字
How to remove a particular digit from an integer using javascript
我有一个包含各种数字的整数,我想从整数中删除 4th
个数字。我怎样才能做到这一点?
示例:
let number = 789012345
这里我要去掉0
let numberWithoutADigit = removeIthDigitFromNumber(789012345, 4);
function removeIthDigitFromNumber(n, i){
//convert the number n to string as an array of char
let o = (n + '').split('');
//remove the item at the index i (0 based) from the array
o.splice(i, 1);
//rebuilds the string from the array of char and parse the string to return a number
let number = parseInt(o.join(''));
return number;
}
您可以按照以下步骤操作:
- 决定是按索引还是按值删除数字,下面的演示将按值删除,这意味着它将删除所有匹配的值
- 将数字转换成字符串
- 使用
Array.from
将字符串转换为数组
- 使用
Array#filter
删除目标数字
- 使用
Array#join
创建字符串
- 使用
+
将字符串转换回数值
const n = 789012345;
const m = +Array.from( n.toString() ).filter(num => +num !== 0).join("");
console.log( m );
试试这个 :
// Input
let number = 789012345;
// Convert number into a string
let numberStr = number.toString();
// Replace the 0 with empty string
const res = numberStr.replace(numberStr[3], '');
// Convert string into a number.
console.log(Number(res));
let x = 789012345
var nums = [];
let i = 0, temp = 0;
while(x > 1){
nums[i++] = (x % 10);
x = (x - (x % 10)) / 10;
}
var cnt = 0;
for(--i; i >= 0; i--){
if (cnt++ == 3) continue;
temp = temp * 10 + nums[i];
}
let number = 789012345
let i = 3 // index 3, 4th digit in number
let arr = number.toString().split("").filter((value, index) => index!==i);
// ['7', '8', '9', '1', '2', '3', '4', '5']
let new_number = parseInt(arr.join(""))
// 78912345
console.log(new_number)
is excellent. I just want to point out another way you could do this with string.replace
和捕获组。
function removeDigit(input, index) {
let exp = new RegExp(`^(\d{${index}})(\d)(.+)$`);
return parseInt(input.toString().replace(exp, ''));
}
let output = removeDigit(789012345, 3);
console.log(output); // 78912345
在此示例中,我创建了一个新的 RegExp object from a template literal 以注入 index
。
第一个捕获组包含直到所需索引的所有数字。第二个包含我们要删除的数字,第三个包含字符串的其余部分。
然后我们 return 从仅第一和第三捕获组的字符串组合中解析出一个整数。
我有一个包含各种数字的整数,我想从整数中删除 4th
个数字。我怎样才能做到这一点?
示例:
let number = 789012345
这里我要去掉0
let numberWithoutADigit = removeIthDigitFromNumber(789012345, 4);
function removeIthDigitFromNumber(n, i){
//convert the number n to string as an array of char
let o = (n + '').split('');
//remove the item at the index i (0 based) from the array
o.splice(i, 1);
//rebuilds the string from the array of char and parse the string to return a number
let number = parseInt(o.join(''));
return number;
}
您可以按照以下步骤操作:
- 决定是按索引还是按值删除数字,下面的演示将按值删除,这意味着它将删除所有匹配的值
- 将数字转换成字符串
- 使用
Array.from
将字符串转换为数组
- 使用
Array#filter
删除目标数字 - 使用
Array#join
创建字符串 - 使用
+
将字符串转换回数值
const n = 789012345;
const m = +Array.from( n.toString() ).filter(num => +num !== 0).join("");
console.log( m );
试试这个 :
// Input
let number = 789012345;
// Convert number into a string
let numberStr = number.toString();
// Replace the 0 with empty string
const res = numberStr.replace(numberStr[3], '');
// Convert string into a number.
console.log(Number(res));
let x = 789012345
var nums = [];
let i = 0, temp = 0;
while(x > 1){
nums[i++] = (x % 10);
x = (x - (x % 10)) / 10;
}
var cnt = 0;
for(--i; i >= 0; i--){
if (cnt++ == 3) continue;
temp = temp * 10 + nums[i];
}
let number = 789012345
let i = 3 // index 3, 4th digit in number
let arr = number.toString().split("").filter((value, index) => index!==i);
// ['7', '8', '9', '1', '2', '3', '4', '5']
let new_number = parseInt(arr.join(""))
// 78912345
console.log(new_number)
string.replace
和捕获组。
function removeDigit(input, index) {
let exp = new RegExp(`^(\d{${index}})(\d)(.+)$`);
return parseInt(input.toString().replace(exp, ''));
}
let output = removeDigit(789012345, 3);
console.log(output); // 78912345
在此示例中,我创建了一个新的 RegExp object from a template literal 以注入 index
。
第一个捕获组包含直到所需索引的所有数字。第二个包含我们要删除的数字,第三个包含字符串的其余部分。
然后我们 return 从仅第一和第三捕获组的字符串组合中解析出一个整数。