JS 基本方法摘要

向上取整
Math.ceil(1.1)
2
Math.ceil(1.9)
2
向下取整
Math.floor(1.1)
1
Math.floor(1.9)
1
四舍五入
Math.round(1.4)
1
Math.round(1.5)
2
转换为整数,也是一种向下取整
parseInt('1.1')
1
parseInt('1.9')
1
转换为浮点数
parseFloat('1.9')
1.9
parseFloat('1.1')
1.1
转换为整数
Number('1.1')
1.1
Number('1.9')
1.9
Number('1')
1
保留小数位 toFixed

toFixed()有自动补零的功能。
它的舍入规则在不同浏览器间不太一样,并且规格较复杂,没有一个准确的预期。即:四舍六入五不确定。

Number(1.74).toFixed(1); // 四舍
'1.7'
Number(1.76).toFixed(1); // 六入
'1.8'
Number(1.751).toFixed(1); // 五考虑 5后非零就进一
'1.8'
Number(1.75).toFixed(1); // 五考虑 5后为零不确定
'1.8'
Number(1.65).toFixed(1); // 五考虑 5后为零不确定
'1.6'
保留小数位解决办法

假设要四舍五入的数字为number,要保留n位小数,可以先用
number ∗ 10^n
,然后用 Math.round()取整,最后在除去10^n
,间接实现四舍五入。

function myToFixed(number, n){
   
  let result = Math.round(number * Math.pow(10, n)) / Math.pow(10, n);
  return result.toFixed(n); // 为了补0
}

myToFixed(1.2345, 2)
'1.23'
myToFixed(1.2345, 3)
'1.235'
myToFixed(1.2345, 4)
'1.2345'
myToFixed(1.2345, 5)
'1.23450'
打印正方形
for (let i = 0; i < 3; i++) {
   4
  let str = "";
  for (let j = 0; j < 3; j++) {
   
    str += '*';
  }
  console.info(str);
}
字符 与 ascii码 互转
A. 字符 转 ascii码:用charCodeAt();
"A".charCodeAt()
65
"Z".charCodeAt()
90
"a".charCodeAt()
97
"z".charCodeAt()
122
B. ascii码 转 字符:用fromCharCode();
String.fromCharCode(65);
'A'
十进制 与 其它进制 互转
A. 十进制 转 其它进制
Number('10').toString(2)
'1010'
Number('10').toString(8)
'12'
Number('10').toString(16)
'a'
B. 其它进制 转 十进制
parseInt('1010',2);
10
parseInt(1010,2);
10
parseInt('1010', 8);
520
parseInt('1010', 16);
4112
test() exec() match()

test(),exec()是RegExp对象方法
match()是String对象方法

1010'.match(/1/g)
['1', '1']
/[^a-zA-Z]/.test('10')
true
/[^a-zA-Z]/.test('a')
false

'Ca 45'.match(/[0-9a-zA-Z]/g).length
4
let str = 'Ca 45'.replace(/[\s]|[\r]/g,''); // 去除空格及换行符
console.info(str.length);
4
slice()、substring()、substr()

slice(start, end)和substring(start, end) 包含从 start(包括该元素) 到 end (不包括该元素);
substr(start, length)第二个参数指定返回的字符串个数;

let str = 'abcdefghijk';

str.slice(3)
'defghijk'
str.substring(3)
'defghijk'
str.slice(3)
'defghijk'

str.slice(3, 5)
'de'
str.substring(3, 5)
'de'
str.substr(3, 5)
'defgh'
let str = 'abcdefghijk';

str.slice(-3)
'ijk'
str.substring(-3)
'abcdefghijk'
str.substr(-3)
'ijk'

str.slice(3, -5)
'def'
str.substring(3, -5)
'abc'
str.substr(3, -5)
''
let str = '20220409';
console.info('year='+str.slice(0,4));
console.info('month='+str.slice(4,6));
console.info('date='+str.slice(6));
year=2022
month=04
date=09
map
[5,4,3,2,1].map((item,index) => {
   
    return `score${
     index+1}=${
     item}`
});
(5) ['score1=5', 'score2=4', 'score3=3', 'score4=2', 'score5=1']
大小写转换
'ABC'.toLowerCase()
'abc'
'abc'.toUpperCase()
'ABC'
获取2个0、空格等
Array(3).join()
',,'
Array(3).join(0)
'00' // 数组长度是3,用0拼接将数组转换成字符串,长度为2
前面补0、空格等

比如要求总共15位

(Array(15+1).join(' ') + parseInt('ABCDEF',16)).slice(-15)
'       11259375'
(Array(15+1).join(0) + parseInt('ABCDEF',16)).slice(-15)
'000000011259375'
计算整数商和余数
parseInt(15/2)
7

15 % 2
1
求整数的个位数
16 % 10
6
1079 % 10
9
求整数的十位数
parseInt(16 / 10) % 10
1
parseInt(1079 / 10) % 10
7
今天是周x,y天后是周几
// 今天是周一,2天后是周三
(1 + 2) % 7 == 0 ? 7 : (1 + 2) % 7
3
// 今天是周五,9天后是周日
(5 + 9) % 7 == 0 ? 7 : (5 + 9) % 7
7
时间转换

将秒转换为:小时 分钟 秒

let mm = Number(3456);
let res = [0, 0, 0];
if (mm >= 3600) {
   
    let hour = parseInt(mm / 3600);
    // mm -= hour * 3600;
    mm = mm % 3600; // 跟mm -= hour * 3600; 效果一样,建议使用%
    res[0] = hour;
}
if (mm >= 60) {
   
    let min = parseInt(mm / 60);
    // mm -= min * 60;
    mm = mm % 60; // 跟mm -= min * 60; 效果一样,建议使用%
    res[1] = min;
}
res[2] = mm;
console.info(res.join(' '));

0 57 36

===================================

parseInt(3456 / 60)
57
3456 % 60
36
3456 - (57*60)
36
分钟转小时和分钟

使用除法获取小时数 /
使用取余获取剩余分钟 %
350分钟转换为:5小时50分钟

350%60
50
parseInt(350/60)
5
2的n次方
// 2的2次方
1<<2
4
Math.pow(2,2)
4
// 2的10次方
1<<10
1024
Math.pow(2,10)
1024
排序
[99.5, 100.0, 22.0, 60.0, 88.5].sort() // 不符合需求
(5) [100, 22, 60, 88.5, 99.5]
[99.5, 100.0, 22.0, 60.0, 88.5].sort((a,b)=>a-b) // 从低到高排序,但会丢掉.0
(5) [22, 60, 88.5, 99.5, 100]
[99.5, 100.0, 22.0, 60.0, 88.5].sort((a,b)=>b-a) // 从高到低排序,但会丢掉.0
(5) [100, 99.5, 88.5, 60, 22]
[99.5, 100.0, 22.0, 60.0, 88.5].sort((a,b)=>b-a).map(item=>item.toFixed(1))
(5) ['100.0', '99.5', '88.5', '60.0', '22.0']
[99.5, 100.0, 22.0, 60.0, 88.5].map(item=>item.toFixed(1)).sort((a,b)=>b-a)
(5) ['100.0', '99.5', '88.5', '60.0', '22.0']
[99.5, 100.0, 22.0, 60.0, 88.5].map(item=>item.toFixed(1)) // toFixed会返回string类型
(5) ['99.5', '100.0', '22.0', '60.0', '88.5']
计算三角形周长和面积

给出的三角形3条边a, b, c,计算三角形的周长和面积

/**
 * 海伦公式求面积:
 * p = (a + b + c)/2
 * area = sqrt(p*(p-a)*(p-b)*(p-c))
 */
let [a, b, c] = [3,3,3];
let cir = a + b + c;
let p = cir / 2;
let area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
console.info("circumference=" + cir.toFixed(2) + " area=" + area.toFixed(2));

circumference=9.00 area=3.90
计算圆的面积

半径为 r 的圆

let r = 5;
let mianji = 3.14*r*r;
mianji = Math.round(mianji*100)/100;
mianji.toFixed(2);
'78.50'
计算圆的体积

半径为 r 的圆

let r = 3;
let tiji = (4/3)*3.14*r*r*r;
tiji = Math.round(tiji*100)/100;
tiji.toFixed(2);
'113.04'
等差数列

等差数列是每项与前一项的差值都相等的数列

大数

JavaScript 安全整数 是 -2^53-1 ~ 2^53-1 ,即: -9007199254740991 ~ 9007199254740991;
对于大数计算,ES新推出了数据类型BigInt,只需要在数字末尾加n字母,就表示BigInt类型。但牛客V8上还不行。BigInt只能跟BigInt计算。

console.info(BigInt(123421241) * BigInt(342431321))
42263298595089361n
console.info((BigInt(123421241) * BigInt(342431321))+BigInt(1))
42263298595089362n
console.info((BigInt(123421241) * BigInt(342431321))+1)
Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions
关于余数

当不能整除时,就产生余数。
余数指整数除法中被除数未被除尽部分。
一个数除以另一个数,要是比另一个数小的话,商为0,余数就是它自己。 [1] 例如:1除以2,商数为0,余数为1;2除以3,商数为0,余数为2。

129.123%1
0.12299999999999045
129.123%10
9.12299999999999
129.123%100
29.12299999999999
129.123%1000
129.123

2%4
2
3%4
3
1%4
1
除以2

n/2
n>>1等于n/2,然后向下取整

4/2
2
5/2
2.5
17/2
8.5

4>>1
2
5>>1
2
17>>1
8
判断奇偶数

n % 2 === 0 为偶数,n % 2 === 1为奇数
n & 1(此时n被转换成01串)和n % 2有同样效果
n & 1 === 0 为偶数,n & 1 === 1为奇数

1%2
1
6%2
0
9%2
1
17%2
1

1&1
1
6&1
0
9&1
1
17&1
1

if (Number(line) % 2 === 0) {
   
    console.info("Even偶数");
} else {
   
    console.info("Odd奇数");
}
判断元音辅音
function isVowel(item){
   
    let o = ['a','e','i','o','u'];
    if(o.includes(item.toLowerCase())){
   
        console.info('Vowel元音');
    }else{
   
        console.info('Consonant辅音');
    }
}
isVowel('AE')
Consonant辅音
isVowel('A')
Vowel元音
判断闰年

1582年以来的置闰规则:
普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。

let year = Number(2022);
if (year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)) {
   
  console.info("yes");
} else {
   
  console.info("no");
}
no
判断是否为字母
let reg = /[a-zA-Z]/;
if (reg.test('w'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值