JavaScript < ES5、ES6、ES7、… >前端JavaScript的技术技巧交流~

记录JS一些比较实用便捷的小技巧(一)

2018-11-19  本文已影响0人  chouchou723

1.使用Boolean过滤数组中的所有假值
假值包括:false,null,0,"",undefined,NaN

const compact = arr => arr.filter(Boolean)

compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34])             // [ 1, 2, 3, 'a', 's', 34 ]

2.取整|0

1.3 | 0         // 1
-1.9 | 0        // -1

3.判断奇偶数(&1)
!!是将值强制转换为boolean值

const num=3;
!!(num & 1)                    // true
!!(num % 2)                    // true

4.精确到指定位数的小数
(e运算,e相当于10的n次方,5e2=5e+2=510^2,5e-2=510^-2)

const round = (n, decimals = 0) => Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`)
round(1.345, 2)                 // 1.35
round(1.345, 1)                 // 1.3

5.数字补0操作

const addZero1 = (num, len = 2) => (`0${num}`).slice(-len)
const addZero2 = (num, len = 2) => (`${num}`).padStart( len   , '0')
addZero1(3) // 03
addZero2(32,4)  // 0032
  1. 统计数组中相同项的个数
var cars = ['BMW','Benz', 'Benz', 'Tesla', 'BMW', 'Toyota'];
var carsObj = cars.reduce(function (obj, name) {
  obj[name] = obj[name] ? ++obj[name] : 1;
  return obj;
}, {});

carsObj; // => { BMW: 2, Benz: 2, Tesla: 1, Toyota: 1 }

..将数组平铺到指定深度

const flatten = (arr, depth = 1) =>
  depth != 1?arr.reduce((a, v) => a.concat(Array.isArray(v) ? flatten(v, depth - 1) : v), [])
    : arr.reduce((a, v) => a.concat(v), []);

flatten([1, [2], 3, 4]);                             // [1, 2, 3, 4]
flatten([1, [2, [3, [4, 5], 6], 7], 8], 2);           // [1, 2, 3, [4, 5], 6, 7, 8]

8.使用解构删除不必要属性

let {_internal, tooBig, ...cleanObject} = {el1: '1', _internal:"secret", tooBig:{}, el2: '2', el3: '3'};
console.log(cleanObject);                         // {el1: '1', el2: '2', el3: '3'}
上一篇下一篇

猜你喜欢

热点阅读