Skip to content

Instantly share code, notes, and snippets.

View iwfan's full-sized avatar
:shipit:
SHIP IT!

Zi莱卷 iwfan

:shipit:
SHIP IT!
View GitHub Profile
@iwfan
iwfan / wild-csv-parse.ts
Last active November 27, 2023 08:53
wild csv parse function
const DELIMITER = ","
const GROUP_QUOTES = ['"', "'"]
function parse(input: string) {
const rows = input.trim().split(/\r?\n/)
return rows.map((row, rowIndex) => {
let [start, cursor, end] = [0, 0, row.length - 1]
const fields: string[] = []
@iwfan
iwfan / EventDelegation.ts
Last active December 31, 2018 05:59
[Event Delegation] 事件代理 #event
function delegationEvent(
type: string,
target: HTMLElement,
selector: string,
callback: (
this: HTMLElement | null,
event: Event,
element: HTMLElement | null
) => any
) {
@iwfan
iwfan / imageFileDownload.ts
Last active September 10, 2021 05:57
Pure javascript image file download
function getBase64Image(img: HTMLImageElement) {
const canvas = document.createElement('canvas')
canvas.width = img.width
canvas.height = img.height
const ctx = canvas.getContext('2d')
ctx.drawImage(img, 0, 0)
const dataURL = canvas.toDataURL('image/png')
return dataURL.replace(/^data:image\/(png|jpg);base64,/, '')
@iwfan
iwfan / separator.js
Created December 28, 2018 02:51
Array separator
function separator(array, delimiter) {
let len = array.length;
const arr = new Array(len * 2 - 1).fill(0);
return arr.reduceRight((p, _, i) =>
[
i % 2 === 0
? array[--len]
@iwfan
iwfan / getElementByClassName.js
Last active December 14, 2018 09:00
getElementByClassName
function isArray(target) {
return Object.prototype.toString.call(target) === "[object Array]";
}
function isClassSelector(selector) {
return /^\.[\w-]+$/.test(selector);
}
function getSelector(array) {
if (!array || !array.length) return;