开发过程中使用,可以早点下班的coding小技巧

场景一:将一个字符串变成数字

常规操作

let str = '2'
console.log(Number(str))   //2

骚操作一

let str = '2'
console.log(~~str)    //2

~~ 的作用是去掉小数部分,对于正数,向下取整;对于负数,向上取整;与Math.floor()不同的是,它只是单纯的去掉小数部分,不论正负都不会改变整数部分

非数字取值为0,它具体为

~~null;      // => 0
~~undefined; // => 0
--NaN;       // => 0
~~0;         // => 0
~~{
    
    };        // => 0
~~[];        // => 0
~~(1/0);     // => 0
~~false;     // => 0
~~true;      // => 1
~~1.9;       // => 1
~~-1.9;      // => -1

骚操作二

let str = '2'
console.log(+str)    //2

当用作单目操作符的时候,+操作符不会对Number类型产生影响。但如果应用在字符串类型上,会将其转换为数字:

let a = 25;
a =+ a;
console.log(a); //25
let b = '50';
console.log(typeof b);    //String
b=+b;
console.log(typeof b);    //Number

通常使用+操作符可以快速地将字符串转换为数字。但是如果字符串字面量无法转化为数字的话,结果会出人意料:

let a = 'zs';
a =+ a;
console.log(a) //NaN
console.log(typeof a);    //Number
let b = '';
b=+b;
console.log(b); //0
console.log(typeof b);    //Number

场景二:数组扁平化

常规操作

let arr = [1, [2, [3, 45]]];
function flatten(arr) {
    
    
    while (arr.some(item => Array.isArray(item))) {
    
    
        arr = [].concat(...arr);
    }
    return arr;
}
console.log(flatten(arr))// [1, 2, 3, 4,5]

骚操作

let arr = [1, [2, [3, 4]]]; 
console.log(arr.flat(Infinity)); // [1, 2, 3, 4,5]

ES6中的flat
我们还可以直接调用 ES6 中的flat方法来实现数组扁平化。flat 方法的语法:arr.flat ( [depth] )其中depth是flat的参数,depth 是可以传递数组的展开深度(默认不填、数值是 1),即展开一层数组。如果层数不确定,参数可以传进 Infinity,代表不论多少层都要展开:

场景三:扩展运算符的应用

1.数组去重

let arr = [3, 5, 2, 2, 5, 5]; 
let setArr = new Set(arr)            // 返回set数据结构Set(3) {3, 5, 2} 
//方法一 es6的...解构 
let unique1 = [...setArr ];          //去重转数组后 [3,5,2] 
//方法二 Array.from()解析类数组为数组 
let unique2 = Array.from(setArr )    //去重转数组后 [3,5,2]

2.字符串去重

let str = "352255"; 
let unique = [...new Set(str)].join(""); // 352

3.实现并集、交集、和差集

let a = new Set([1, 2, 3]); 
let b = new Set([4, 3, 2]); 
// 并集 
let union = new Set([...a, ...b]); // Set {1, 2, 3, 4} 
// 交集 
let intersect = new Set([...a].filter(x => b.has(x))); // set {2, 3} 
// (a 相对于 b 的)差集 
let difference = new Set([...a].filter(x => !b.has(x))); // Set {1}

5.配合rest 运算符应用

function sumRest (...m) {
    
    
    var total = 0; 
    for(var i of m){
    
    
        total += i;
    }
    return total;
}
console.log(sumRest(1,2,3));//6

6.数组排序

const sortNumbers = (...numbers) => numbers.sort();

猜你喜欢

转载自blog.csdn.net/qq_52099965/article/details/129333767