Skip to content

Instantly share code, notes, and snippets.

View wangziling's full-sized avatar
🥰
I love my wife more than coding~

王子凌 wangziling

🥰
I love my wife more than coding~
View GitHub Profile
@wangziling
wangziling / flatten_array.js
Created July 5, 2018 16:57
Use es6 method - Generator, to flatten multidimensional array.
// method
const flat = function *(arr) {
const {length} = arr;
for(let i = 0; i< length; i++) {
const item = arr[i];
if(Array.isArray(item)){
yield* flat(item);
} else {
yield item;
}
@wangziling
wangziling / find_longest_symmetric_string_fast.js
Last active September 19, 2018 08:08
从一个字符串中,找出最长的对称字符串。即 xyzazyx 或者 xyzzyx。
// 测试字符串
const stringArray = 'dadasdadawqfsdfaabbabcdedcbabbasadada13dfasafafa'.split(
'');
// 测试字符串倒转
const stringArrayReverse = stringArray.slice().reverse();
const stringArrayReverseJoin = stringArrayReverse.join('');
// 最终结果
let resultString = '';
// 统计计算次数
let calcNum = 0;
@wangziling
wangziling / instance_of.js
Created September 18, 2018 09:59
instanceof 原理大概解析
// 转自:https://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/
// instanceof 原理大概解析
function instance_of(L, R) {// L 表示左表达式,R 表示右表达式
var O = R.prototype;// 取 R 的显示原型
L = L.__proto__;// 取 L 的隐式原型
while (true) {
if (L === null)
return false;
if (O === L)// 这里重点:当 O 严格等于 L 时,返回 true
return true;
@wangziling
wangziling / cachedFn.ts
Last active August 25, 2020 16:54
Made a function result cacheable, no matter its args' length.
export interface ICachedFnTreeOptions<This = any> {
context: This;
manipulable: boolean;
}
/**
* Made a function result cacheable, no matter its args' length.
* @param targetFn {(*) => *} The target function.
* @param [options] {ICachedFnTreeOptions} The options
* @return {(*) => *}
@wangziling
wangziling / related-to.js
Created August 8, 2020 16:00
Judge two objects are related.
@wangziling
wangziling / TeleportVariable.jsx
Last active February 23, 2023 05:38
Teleport variables.
export default {
name: "TeleportVariable",
inheritAttrs: false, // Must set as `false`. Or you will see your bindings existed on your slot DOM attributes, as data="[object Object]"
render () {
return this.$scopedSlots.default(this.$attrs);
}
};
@wangziling
wangziling / deferAllSettled.js
Last active May 16, 2021 15:36
jQuery ajax/deferred `Promise.allSettled`
/**
* @typedef {{ status: 'fulfilled', value: *}} TPromiseAllSettledFulfilledResult
* @typedef {{ status: 'rejected', reason: (*|Error) }} TPromiseAllSettledRejectedResult
* @typedef {(TPromiseAllSettledFulfilledResult|TPromiseAllSettledRejectedResult)[]} TDeferAllSettledResult
*/
/**
* Same as `Promise.allSettled`.
* Try hard to not to use `Promise`, all from JQuery.
* @param deferIterator {JQuery.Deferred[]|JQuery.jqXHR[]|Object<string, JQuery.Deferred>}
@wangziling
wangziling / v-if-or-show.tsx
Created December 3, 2021 06:33
Vue component for using v-if or v-show.
/* eslint-disable no-unused-vars */
import { Component, Prop, Vue } from 'vue-property-decorator';
import { CreateElement } from 'vue';
import _ from 'lodash';
@Component
export default class VIfOrShow extends Vue {
/* Data START */
/* Data END */
@wangziling
wangziling / Date.tsx
Created December 13, 2021 16:23
date.deno.dev
/** @jsx h */
/// <reference no-default-lib="true"/>
/// <reference lib="dom" />
/// <reference lib="dom.asynciterable" />
/// <reference lib="deno.ns" />
import { serve } from "https://deno.land/std@0.114.0/http/server.ts";
import { h, ssr, tw } from "https://crux.land/nanossr@0.0.1";
const ShowDate = (props) => (
<div class={tw`bg-white flex h-screen`}>
@wangziling
wangziling / render-manager.ts
Last active May 25, 2023 10:02
Vue manual render manager.
import Vue, { ComponentOptions, CreateElement } from 'vue';
import { VNodeData } from 'vue/types/vnode';
import { AsyncComponentFactory, AsyncComponentPromise, FunctionalComponentOptions } from 'vue/types/options';
import _ from 'lodash';
import $ from 'jquery';
export type TArrayOrPrimitive<T> = T extends Array<any> | ReadonlyArray<any>
? T | TArrayMember<T>
: Array<T> | T;