js的一些有用技巧&字符串、数组操作

1、保留数字两位小数

实现一:number.toFixed(2)
参数:小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0

该方法不会改变原数值。

该方法会返回一个数值的字符串表现形式,保留 digits 位小数。

修改了数据类型:从数字到字符串

实现二:Math.round()
Math.round()方法:四舍五入,取得是整数,不能精确小数位。

保留两位小数先把数据扩大100倍,四舍五入后在缩小100倍即可。

round() 方法可把一个数字舍入为最接近的整数,不修改数据类型

console.log(9.02.toFixed(2))
console.log((8).toFixed(2))
console.log(Math.round(9.02))
console.log(Math.round(8))
console.log(Math.round(9.02*100)/100)
console.log(Math.round(8.1*100)/100)
console.log(Math.round(8*100)/100)
输出结果:

 

可知,采用先乘后除可以是Math.round也保留小数,但是对于8.1或者8还是无法保留,这时需要检测结果是否有.再在小数点后补0.

2、对于函数参数传入为不确定(对象)的情况判断及处理

一 传入参数为空或者对象
formatNumber(number, option)
如上:第二个参数option,可能不传,可能传入一个对象,对象的key 为currency

那么可以用如下代码判断,先判断option是否有,再判断currency

if (option && option.currency=== true) {
二、判断传入参数为null ,''空字符串或者不传入
if (args&&args.length !== 0) {
args可以过滤null和Undefined,args.length可以过滤‘’空字符串或者空数组

js中 0,NaN,'',null,undefined为false

if([]){}中是会进入{}的.。[]的布尔值是true

举例:[]==![]为true

分析:![]是false

[]==false,都转化为数字,那么0==0所以为true

3、数组扁平化但是只拍平第一层数组

console.log(flattenArray([[1, 2], [[3, 4], 5]])) //[1, 2, [3, 4], 5]
实现:用flag来标识,只进入一次扁平化处理

function flattenArray(array) {
var res=[];
array.map(function(item) {
var flag=true
if (flag && Array.isArray(item)){
res = res.concat(item)
flag = false;
}else {
res.push(item)
}
})
return res
}
4、将布尔值转化为数字

使用Boolean类型转换,再写一个+

 

5、如何确定上级作用域

当前函数执行,形成一个私有作用域A,A的上级作用域是谁,和他在哪里执行无关,只和创建定义有关,在哪里创建的,他的上级作用域就是谁

var a=12;
function fn(){
console.log(a);
}
function sum(){
var a=120;
fn();
}
sum(); //a=>20

posted @ 2019-07-15 23:50  经管时评  阅读(117)  评论(0编辑  收藏  举报