Skip to content

Instantly share code, notes, and snippets.

View jovey-zheng's full-sized avatar
🎯
Focusing

Jovey Zheng jovey-zheng

🎯
Focusing
View GitHub Profile
@jovey-zheng
jovey-zheng / sumBigNumber.js
Created May 5, 2019 03:03
Calculate the sum of large numbers.
/**
* @param a {String}
* @param b {String}
*/
function sumBigNumber(a, b) {
if (typeof a !== 'string' || typeof b !== 'string') {
throw new Error('param 'a' and 'b' must be string')
}
var res = '',
@jovey-zheng
jovey-zheng / flatten.js
Last active May 6, 2019 07:15
Flatten deep nested arrays.
// array flatten function
function flatten (arr) {
let result = [].slice.call(arguments)[1] || []
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatten(arr[i], result)
} else {
result.push(arr[i])
}
@jovey-zheng
jovey-zheng / syncApply.js
Created September 16, 2017 07:12
Sync apply function
syncApply ({timeout, fn, args = [], scope = this}) {
return new Promise((resolve, reject) => {
try {
setTimeout(() => {
resolve(fn.apply(scope, args))
}, timeout)
} catch (err) {
reject(err)
}
})
@jovey-zheng
jovey-zheng / getElementTop.js
Last active August 2, 2017 06:52
Get element top in document
function getElementTop(elem) {
  var elemTop = elem.offsetTop;
  elem = elem.offsetParent;
  while (elem != null) {
    elemTop += elem.offsetTop;
    elem = elem.offsetParent;
  }
  return elemTop;
// 简单的缓存工具
// 匿名函数创造了一个闭包
const cache = (function() {
const store = {};
return {
get(key) {
return store[key];
},
set(key, val) {
function isRepeat(arr){
var hash = {};
for (var item of arr) {
if (hash[item]) {
return true;
}
hash[item] = false;
}
@jovey-zheng
jovey-zheng / numtoCl.js
Created August 3, 2016 09:45
Transform Number to Chinese.
(function(global){
var numtoCL = {}
var Maxnumb = 9007199254740992;
numtoCL.toS = function(num,m){
var op = {
ch: '零一二三四五六七八九'
,ch_u: '个十百千万亿'
,other: '负点'
,toCL: this.toCL
@jovey-zheng
jovey-zheng / DateFormat.js
Last active July 28, 2016 05:41
Format Date.
class DateFormat {
constructor(tmp) {
this.tmp = +tmp || Date.now();
}
duration(format = 'HH:mm:ss') {
let hour = ~~(this.tmp/1000/60/60);
let minutes = ~~((this.tmp/1000/60)%60);
let seconds = ~~((this.tmp/1000)%60);
@jovey-zheng
jovey-zheng / _.chunk.js
Created July 28, 2016 01:07
Transform an array to some chunk array.
function chunk(arr, chunk) {
var res = [],
len = arr.length,
_len = Math.ceil(arr.length / chunk),
_chunk = 0;
chunk = chunk > len ? len : chunk;
for (var i = 0; i < _len ;i++) {
var _arr = [];
@jovey-zheng
jovey-zheng / merge.js
Created May 20, 2016 02:31
merge array based on lodash.
var _ = require('lodash');
module.exports = function (source, target) {
var joinArrays = function (a, b) {
if (_.isArray(a) && _.isArray(b)) {
return a.concat(b);
};
if (_.isPlainObject(a) && _.isPlainObject(b)) {
return _.merge(a, b, joinArrays);
};