删除数字开头的符号 - JS
remove the sign at the beginning of the number - JS
我得到一个计算结果减去结果数。当我想删除这个数字前面的减号时,我收到“.. is not function”警告。这是什么原因?
function cms(miliseconds, format) {
let days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
total_seconds = parseInt(Math.floor(miliseconds / 1000));
total_minutes = parseInt(Math.floor(total_seconds / 60));
total_hours = parseInt(Math.floor(total_minutes / 60));
days = parseInt(Math.floor(total_hours / 24));
seconds = parseInt(total_seconds % 60);
minutes = parseInt(total_minutes % 60);
hours = parseInt(total_hours % 24);
switch (format) {
case 's':
return total_seconds;
case 'm':
return total_minutes;
case 'h':
return total_hours;
case 'd':
return days;
default:
return {d: days, h: hours, m: minutes, s: seconds};
}
}
const cd3F = cms(...); // Result: -3512
cd3F.slice(1));
Uncaught TypeError: cd3F.slice is not a function is not a function
您的 cms
函数将要 return 数字或对象,并且它们都没有 slice
方法。
一个更好的函数是 Math.abs(),它将任何负数转换为正数(并保留任何正数)但请注意它会 return NaN
如果你给它传递一个对象。
为什么这么复杂? n * -1
const cd3F = cms(...); // Result: -3512
cd3F = cd3F < 0 ? cd3F * -1 : cd3F;
console.log(cd3F); // 3512
数字和对象都没有切片方法,因此对于字符串,您首先必须进行以下更改
cd3F.slice(1));
至
cd3F.toString().slice(1) // also look at brackets
虽然这并不能解决所有用例的问题,因为您有可能 return 一个对象。
我会使用 Math.abs() 因为它将 return NaN(如果它是一个对象)或一个正整数(如果它确实是一个数字)
.slice 方法适用于 strings and arrays,不适用于数字。
function cms(miliseconds, format) {
let days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
total_seconds = parseInt(Math.floor(miliseconds / 1000));
total_minutes = parseInt(Math.floor(total_seconds / 60));
total_hours = parseInt(Math.floor(total_minutes / 60));
days = parseInt(Math.floor(total_hours / 24));
seconds = parseInt(total_seconds % 60);
minutes = parseInt(total_minutes % 60);
hours = parseInt(total_hours % 24);
switch (format) {
case 's':
return total_seconds;
case 'm':
return total_minutes;
case 'h':
return total_hours;
case 'd':
return days;
default:
return {d: days, h: hours, m: minutes, s: seconds};
}
}
const cd3F = cms(...); // Result: -3512
const abs_cd3F = Math.abs(cd3F);
你应该使用 Math.abs。只有当它是一个字符串时,你才能使用 .slice(1).
如果您只想要正数,那么您不妨将 Math.abs 放入您的函数中。
function cms(milliseconds, format) {
milliseconds = Math.abs(milliseconds);
let days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
total_seconds = parseInt(Math.floor(milliseconds / 1000));
total_minutes = parseInt(Math.floor(total_seconds / 60));
total_hours = parseInt(Math.floor(total_minutes / 60));
days = parseInt(Math.floor(total_hours / 24));
seconds = parseInt(total_seconds % 60);
minutes = parseInt(total_minutes % 60);
hours = parseInt(total_hours % 24);
switch (format) {
case 's':
return total_seconds;
case 'm':
return total_minutes;
case 'h':
return total_hours;
case 'd':
return days;
default:
return {d: days, h: hours, m: minutes, s: seconds};
}
}
const cd3F = cms(-3512000, "s"); // Result: 3512
我得到一个计算结果减去结果数。当我想删除这个数字前面的减号时,我收到“.. is not function”警告。这是什么原因?
function cms(miliseconds, format) {
let days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
total_seconds = parseInt(Math.floor(miliseconds / 1000));
total_minutes = parseInt(Math.floor(total_seconds / 60));
total_hours = parseInt(Math.floor(total_minutes / 60));
days = parseInt(Math.floor(total_hours / 24));
seconds = parseInt(total_seconds % 60);
minutes = parseInt(total_minutes % 60);
hours = parseInt(total_hours % 24);
switch (format) {
case 's':
return total_seconds;
case 'm':
return total_minutes;
case 'h':
return total_hours;
case 'd':
return days;
default:
return {d: days, h: hours, m: minutes, s: seconds};
}
}
const cd3F = cms(...); // Result: -3512
cd3F.slice(1));
Uncaught TypeError: cd3F.slice is not a function is not a function
您的 cms
函数将要 return 数字或对象,并且它们都没有 slice
方法。
一个更好的函数是 Math.abs(),它将任何负数转换为正数(并保留任何正数)但请注意它会 return NaN
如果你给它传递一个对象。
为什么这么复杂? n * -1
const cd3F = cms(...); // Result: -3512
cd3F = cd3F < 0 ? cd3F * -1 : cd3F;
console.log(cd3F); // 3512
数字和对象都没有切片方法,因此对于字符串,您首先必须进行以下更改
cd3F.slice(1));
至
cd3F.toString().slice(1) // also look at brackets
虽然这并不能解决所有用例的问题,因为您有可能 return 一个对象。
我会使用 Math.abs() 因为它将 return NaN(如果它是一个对象)或一个正整数(如果它确实是一个数字)
.slice 方法适用于 strings and arrays,不适用于数字。
function cms(miliseconds, format) {
let days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
total_seconds = parseInt(Math.floor(miliseconds / 1000));
total_minutes = parseInt(Math.floor(total_seconds / 60));
total_hours = parseInt(Math.floor(total_minutes / 60));
days = parseInt(Math.floor(total_hours / 24));
seconds = parseInt(total_seconds % 60);
minutes = parseInt(total_minutes % 60);
hours = parseInt(total_hours % 24);
switch (format) {
case 's':
return total_seconds;
case 'm':
return total_minutes;
case 'h':
return total_hours;
case 'd':
return days;
default:
return {d: days, h: hours, m: minutes, s: seconds};
}
}
const cd3F = cms(...); // Result: -3512
const abs_cd3F = Math.abs(cd3F);
你应该使用 Math.abs。只有当它是一个字符串时,你才能使用 .slice(1).
如果您只想要正数,那么您不妨将 Math.abs 放入您的函数中。
function cms(milliseconds, format) {
milliseconds = Math.abs(milliseconds);
let days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
total_seconds = parseInt(Math.floor(milliseconds / 1000));
total_minutes = parseInt(Math.floor(total_seconds / 60));
total_hours = parseInt(Math.floor(total_minutes / 60));
days = parseInt(Math.floor(total_hours / 24));
seconds = parseInt(total_seconds % 60);
minutes = parseInt(total_minutes % 60);
hours = parseInt(total_hours % 24);
switch (format) {
case 's':
return total_seconds;
case 'm':
return total_minutes;
case 'h':
return total_hours;
case 'd':
return days;
default:
return {d: days, h: hours, m: minutes, s: seconds};
}
}
const cd3F = cms(-3512000, "s"); // Result: 3512