Skip to content

Instantly share code, notes, and snippets.

Avatar
💭
Rampaging

Azriel Axighi

💭
Rampaging
View GitHub Profile
View asyncRunner.ts
class AsyncTaskRunner {
private aborted: boolean;
ag: () => AsyncGenerator<any, void, unknown>;
constructor(tasks: Promise<any>[]) {
this.aborted = false;
this.ag = async function* asyncGenerator() {
for (let i = 0; i < tasks.length; i++) {
try {
const res = await tasks[i];
@Axighi
Axighi / buildBinaryTreeFromArray.js
Last active Apr 20, 2021
Convert LeetCode Array Binary Tree To Tree Structure
View buildBinaryTreeFromArray.js
// Definition for a binary tree node.
function TreeNode(val, left, right) {
this.val = val === undefined ? 0 : val;
this.left = left === undefined ? null : left;
this.right = right === undefined ? null : right;
}
/**
* @param {Array<Number>} nodes
* @return {null | TreeNode}
View timer.js
export default class Timer {
constructor(time = 10, cb = () => console.log('null callback')) {
this.time = time
this.cb = cb
this.remain = time * 1000
}
start() {
this.startTime = new Date()
this.remain = this.time * 1000
View futch.js
function futch(url, opts={}, onProgress) {
return new Promise( (res, rej)=>{
var xhr = new XMLHttpRequest();
xhr.open(opts.method || 'get', url);
for (var k in opts.headers||{})
xhr.setRequestHeader(k, opts.headers[k]);
xhr.onload = e => res(e.target.responseText);
xhr.onerror = rej;
if (xhr.upload && onProgress)
xhr.upload.onprogress = onProgress; // event.loaded / event.total * 100 ; //event.lengthComputable
@Axighi
Axighi / increase_replace.js
Created May 2, 2017
Using regex to replace match strings with auto increment number.
View increase_replace.js
'An aplle is not a banana'.replace(/a/g, (() => {
var number = 0;
return () => {
return number++;
}
})())
View detect_browser.js
navigator.sayswho= (function(){
var ua= navigator.userAgent, tem,
M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if(/trident/i.test(M[1])){
tem= /\brv[ :]+(\d+)/g.exec(ua) || [];
return 'IE '+(tem[1] || '');
}
if(M[1]=== 'Chrome'){
tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
View curry.js
Function.prototype.curry = function() {
if (arguments.length < 1) {
return this;
}
const self = this;
const args = toArray(arguments);
return function() {
return self.apply(this, args.concat(toArray(arguments)));
View Custom Object addEventListener.js
var CustomObject = function () {
var _this = this;
_this.events = {};
_this.addEventListener = function(name, handler) {
if (_this.events.hasOwnProperty(name))
_this.events[name].push(handler);
else
_this.events[name] = [handler];
};
View addTwoNumbers.py
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
View requireAll.js
var req = require.context("../someDir", true, /^(.*\.(js$))[^.]*$/igm);
req.keys().forEach(function(key){
req(key);
});