npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ilibs

v1.0.10

Published

前端基础工具方法

Downloads

45

Readme

ilibs

前端基础工具方法

Install

$ npm install ilibs
// or
$ npm i ilibs
// or
$ pnpm install ilibs
// or
$ yarn add ilibs

验证

函数列表

| 函数名称 | 描述 | | ------------------ | ------------------------------------------------ | | isArray(data) | 验证是否为数组 | | isObject(data) | 验证数据是否为对象 | | isFunction(data) | 验证数据是否为函数 | | isString(data) | 验证数据是否为字符串 | | isNumber(data) | 验证数据是否为数字类型 | | isBoolean(data) | 验证数据是否为布尔值 | | isSymbol(data) | 验证数据是否为 symbol | | isBasicData(data) | 验证数据是否为基础数据类型 | | isJSONStr(str) | 检查字符串是否为 json 字符串 | | isType(data,type) | 验证数据是否为指定数据类型 | | getType(data) | 获取数据类型 | | isEqual(v1,v2) | 验证两条数据是否相等 | | isOdd(num) | 检查是否为奇数 | | isPicture(picture) | 检查字符串是否为图片 url | | isURL(url) | 检查 URL 是否有效 | | isDevice() | 检查当前是 android 还是 ios 还是 web 还是 WeChat | | isHex(color) | 检验证是否为 hex 颜色有效值 | | isRgb(color) | 验证是否为 rgb 颜色有效值 | | isColor(color) | 验证是否为颜色有效值 | | isExistChild(data) | 验证对象/数组是否为空数据 |

API

isArray

验证数据是否为数组

import { isArray } from 'ilibs';
console.log(isArray([1, 2, 3, 4])); // true
console.log(isArray(1)); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isObject

验证数据是否为对象

import { isObject } from 'ilibs';
console.log(isObject({ a: 1 })); // true
console.log(isObject([1, 2, 3, 4])); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isFunction

验证数据是否为函数

import { isFunction } from 'ilibs';
console.log(isFunction(isFunction)); // true
console.log(isFunction({ a: 1 })); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isString

验证数据是否为字符串

import { isString } from 'ilibs';
console.log(isString('isString')); // true
console.log(isString({ a: 1 })); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isNumber

验证数据是否为数字类型

import { isNumber } from 'ilibs';
console.log(isNumber(1)); // true
console.log(isNumber('1.2')); // true
console.log(isNumber('1a')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isBoolean

验证数据是否为布尔值

import { isBoolean } from 'ilibs';
console.log(isBoolean(true)); // true
console.log(isBoolean('1a')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isSymbol

验证数据是否为 symbol

import { isSymbol } from 'ilibs';
console.log(isSymbol(new Symbol('1'))); // true
console.log(isSymbol('1a')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isBasicData

验证数据是否为基础数据类型

import { isBasicData } from 'ilibs';
console.log(isBasicData(1)); // true
console.log(isBasicData(new Symbol('1'))); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

isJSONStr

检查字符串是否为 json 字符串

import { isJSONStr } from 'ilibs';
console.log(isJSONStr('{"a":1}')); // true
console.log(isJSONStr('12345678')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ------ | ---- | ------ | | str | 需要验证的数据 | string | yes | - |

isType

验证数据是否为指定数据类型

import { isType } from 'ilibs';
console.log(isType('{"a":1}', 'string')); // true
console.log(isType('12345678', 'number')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ------ | ---- | -------------------------------------------------- | | data | 需要验证的数据 | any | yes | - | | type | 验证的数据类型 | string | yes | string/number/object/symbol/array/function/boolean |

getType

获取数据类型

import { getType } from 'ilibs';
console.log(getType({ a: 1 })); // object
console.log(getType('12345678')); // string
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ---- | ---- | ------ | | data | 需要验证的数据 | any | yes | - |

Return

'string' | 'number' | 'object' | 'symbol' | 'array' | 'function' | 'boolean'

isEqual

验证两条数据是否相等

import { isEqual } from 'ilibs';
console.log(isEqual({ a: 1 }, { a: 1 })); // true
console.log(isEqual('12345678', 'number')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ---- | ---- | ------ | | v1 | 需要验证的数据 1 | any | yes | - | | v2 | 需要验证的数据 2 | any | yes | - |

isOdd

检查是否为奇数

import { isOdd } from 'ilibs';
console.log(isOdd(1)); // true
console.log(isOdd(2)); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ------ | ---- | ------ | | num | 需要验证的数字 | number | yes | - |

isPicture

检查字符串是否为图片 url

import { isPicture } from 'ilibs';
console.log(isPicture('./image.png')); // true
console.log(isPicture('./video.mp4')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ------- | -------------- | ------ | ---- | ------ | | picture | 需要验证的链接 | string | yes | - |

isURL

检查字符串是否为图片 url

import { isURL } from 'ilibs';
console.log(isURL('https://baidu.com')); // true
console.log(isURL('./video.mp4')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ------ | ---- | ------ | | url | 需要验证的链接 | string | yes | - |

isDevice

检查当前是 android 还是 ios 还是 web 还是 WeChat

import { isURL } from 'ilibs';
console.log(isDevice()); // Web
return

'iOS' | 'Android' | 'WeChat' | 'Web'

isHex

验证是否为 hex 颜色有效值

import { isHex } from 'ilibs';
console.log(isHex('#fff')); // true
console.log(isHex('rgba(255,255,255,1)')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ----- | -------------- | ------ | ---- | ------ | | color | 需要验证的 hex | string | yes | - |

isRgb

验证是否为 rgb 颜色有效值

import { isRgb } from 'ilibs';
console.log(isRgb('#fff')); // false
console.log(isRgb('rgba(255,255,255,1)')); // true
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ----- | -------------- | ------ | ---- | ------ | | color | 需要验证的 hex | string | yes | - |

isColor

验证是否为颜色有效值

import { isColor } from 'ilibs';
console.log(isColor('#fff')); // true
console.log(isColor('(255,255,255,1)')); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ----- | -------------- | ------ | ---- | ------ | | color | 需要验证的 hex | string | yes | - |

isExistChild

验证对象/数组是否为空数据

import { isExistChild } from 'ilibs';
console.log(isExistChild({})); // true
console.log(isExistChild({ a: 1 })); // false
console.log(isExistChild({})); // true
console.log(isExistChild({ a: 1 })); // false
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ------------ | ---- | ------ | | data | 需要验证的数据 | any[]/obejct | yes | - |

转换

函数列表

| 函数名称 | 描述 | | --------------------------------- | ----------------------------------- | | toLowerCase(str) | 字符串全部转小写 | | toUpperCase(str) | 字符串全部转大写 | | capitalUpperCase(str) | 设置首字母大写不改变之后的字符串 | | capitalLowerCase(str) | 设置首字母小写不改变之后的字符串 | | capitalUpperCaseAllLowerCase(str) | 设置首字母大写其他全部转为小写 | | toLowerCamelCase(str) | 将"xx_xx"字符串转为小驼峰 | | toCamelCase(str) | 将"xx_xx"字符串转为大驼峰 | | filterTag(str) | 过滤 html 代码(把<>转换为字符串) | | convertNumberToUppercase(num) | 将阿拉伯数字翻译成中文的大写数字 | | dateFmt(date,fmt) | 时间格式化 | | getPinyin(l1,firstBoolen) | 汉字转拼音 | | hexToRgb(color,a) | 将 hex 表示方式转换为 rgba 表示方式 | | rgbToHex(rgb) | 将 rgb 表示方式转换为 hex 表示方式 |

API

toLowerCase

字符串全部转小写

import { toLowerCase } from 'ilibs';
console.log(toLowerCase('HTTPs')); // https
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

toUpperCase

字符串全部大写

import { toUpperCase } from 'ilibs';
console.log(toUpperCase('HTTPs')); // HTTPS
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

capitalUpperCase

设置首字母大写不改变之后的字符串

import { capitalUpperCase } from 'ilibs';
console.log(capitalUpperCase('https')); // Https
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

capitalLowerCase

设置首字母小写不改变之后的字符串

import { capitalLowerCase } from 'ilibs';
console.log(capitalLowerCase('Https')); // https
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

capitalUpperCaseAllLowerCase

设置首字母大写其他全部转为小写

import { capitalUpperCaseAllLowerCase } from 'ilibs';
console.log(capitalUpperCaseAllLowerCase('HTTPS')); //Https
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

toLowerCamelCase

将"xx_xx"字符串转为小驼峰

import { toLowerCamelCase } from 'ilibs';
console.log(toLowerCamelCase('HTTPS_baidu')); //httpsBaidu
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

toCamelCase

将"xx_xx"字符串转为大驼峰

import { toCamelCase } from 'ilibs';
console.log(toCamelCase('HTTPS_baidu')); //HttpsBaidu
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

filterTag

过滤 html 代码(把<>转换为字符串)

import { filterTag } from 'ilibs';
console.log(filterTag('<div>HTTPS_baidu</div>')); //<div>HTTPS_baidu</div>
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | ---------------- | ------ | ---- | ------ | | str | 需要转换的字符串 | string | yes | - |

convertNumberToUppercase

将阿拉伯数字翻译成中文的大写数字

import { convertNumberToUppercase } from 'ilibs';
console.log(convertNumberToUppercase(12312312)); //一仟二百三十一萬二仟三百一十二
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | | ---- | -------------- | ------ | ---- | ------ | | num | 需要转换的数字 | number | yes | - |

dateFmt

时间格式化

import { dateFmt } from 'ilibs';
console.log(dateFmt()); // 2022/10/09 15:12:34
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | 默认值 | | ---- | -------------- | -------- | ---- | ------ | ------------------- | | date | 需要转换的时间 | DateTime | - | - | - | | fmt | 转换的时间格式 | string | - | - | YYYY/mm/dd HH:MM:SS |

getPinyin

汉字转拼音

import { getPinyin } from 'ilibs';
console.log(getPinyin('汉字转拼音')); // HanZiZhuanPinYin
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | 默认值 | | ----------- | ---------------------- | ------ | ---- | ---------- | ------ | | l1 | 指定中文字符串 | string | - | - | - | | firstBoolen | 每个单词首字母是否大写 | boolen | - | true/false | true |

hexToRgb

将 hex 表示方式转换为 rgba 表示方式

import { hexToRgb } from 'ilibs';
console.log(hexToRgb('#ffffff')); // rgba(255,255,255,1)
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | 默认值 | | ----- | ------------------------ | ------ | ---- | ------ | ------ | | color | hex 色值 | string | - | - | - | | a | 转换结束的透明度,默认 1 | boolen | - | 0-1 | 1 |

rgbToHex

将 rgb 表示方式转换为 hex 表示方式

import { rgbToHex } from 'ilibs';
console.log(rgbToHex('rgba(255,255,255,1)')); // #FFFFFFFF
API

| 参数 | 描述 | 类型 | 必填 | 可选项 | 默认值 | | ---- | -------- | ------ | ---- | ------ | ------ | | rgb | rgb 色值 | string | - | - | - |

工具

函数列表

| 函数名称 | 描述 | | -------------------------------------- | ----------------------------------------------------------------- | | fontSize(def,maxWidth) | 根据分辨率不同显示不同字体大小 | | getUrlQuery(url) | 从查询字符串中获取参数 | | generatePathQuery(path,obj) | 使用查询字符串生成路径 | | getPathParams(path,pathMap,serializer) | 从路径中获取参数 | | generatePath(path,obj) | 使用查询字符串生成路径 | | howLongAgo(date,type) | 距现在多少时间前 | | useThrottl(fn,time) | 程序节流 | | useDebounce(fn,time) | 程序防抖 | | useLazyLoad(tags,node) | 图片懒加载 | | randomNum(min,max) | 生成区间随机数 | | cloneDeep(data,) | 数据深拷贝 | | unwarp(obj) | 针对于 Proxy 对象结构 | | merge(...args) | 数据合并 | | each(data,iteratee) | 遍历数据 | | filter(array,predicate) | 数组筛选 | | push(data,key,value) | 对象/数组添加数据 | | flatter(arr) | 数组扁平化处理(多维数组变成一维数组) | | setValue(data,path,value) | 设置数组/对象中对应 path 属性路径上的值,如果 path 不存在,则创建 | | getValue(data,key,alt) | 根据字符串输出对象参数,避免程序阻滞 | | currying(fn,...args) | 柯里化处理 | | templateParser(template,data) | template 解析器 | | listToTree(data) | 列表转成树形结构 | | treeToList(data) | 树形结构转成列表 | | setInterval(fn,t) | setInterval 重置优化 | | copyjs(dom) | 复制当前节点内容 | | generateRandomHexColor() | 生成随机颜色 | | scrollTo(element,type) | 滚动到顶部/底部 ('top'/'bottom',默认 top) |

API

fontSize

字符串全部转小写

import { fontSize } from 'ilibs';
console.log(fontSize(14, 1920)); // 14
API

| 参数 | 描述 | 类型 | 必填 | 默认值 | | -------- | ------------ | ------ | ---- | ------ | | def | 基数值 | number | yes | - | | maxWidth | 最大分辨率宽 | number | - | 1920 |

Return

number

getUrlQuery

从查询字符串中获取参数

import { getUrlQuery } from 'ilibs';
console.log(getUrlQuery('/user?name=Orkhan&age=30')); // {name: 'Orkhan', age: '30'}
API

| 参数 | 描述 | 类型 | 必填 | 默认值 | | ---- | -------- | ------ | ---- | ------ | | url | url 地址 | string | yes | - |

Return

object

generatePathQuery

使用查询字符串生成路径

import { generatePathQuery } from 'ilibs';
console.log(generatePathQuery('/user', { name: 'Orkhan', age: 30 })); // /user?name=Orkhan&age=30
API

| 参数 | 描述 | 类型 | 必填 | 默认值 | | ---- | -------- | ------ | ---- | ------ | | path | 路径符串 | string | yes | - | | obj | 条件对象 | object | - | - |

Return

string

getPathParams

从查询字符串中获取参数

import { getPathParams } from 'ilibs';
console.log(getPathParams('/app/products/123', '/app/:page/:id')); // {page: 'products', id: '123'}
console.log(
	getPathParams('/items/2/id/8583212', '/items/:category/id/:id', {
		category: (v) => ['Car', 'Mobile', 'Home'][v],
		id: (v) => +v,
	}),
); // {category: 'Home', id: 8583212}
API

| 参数 | 描述 | 类型 | 必填 | 默认值 | | ---------- | ------------------ | ------ | ---- | ------ | | path | url 地址 | string | yes | - | | pathMap | 需要获取参数字符串 | string | yes | - | | serializer | 自由组合返回的对象 | object | - | - |

Return

object

generatePath

使用查询字符串生成路径

import { generatePath } from 'ilibs';
console.log(generatePath('/user/:name/:age', { name: 'Orkhan', age: 30 })); // /user/Orkhan/30
API

| 参数 | 描述 | 类型 | 必填 | 默认值 | | ---- | -------- | ------ | ---- | ------ | | path | 路径符串 | string | yes | - | | obj | 条件对象 | object | - | - |

Return

string

howLongAgo

使用查询字符串生成路径

import { howLongAgo } from 'ilibs';
console.log(howLongAgo('2022-10-09 15:30:23')); // 1 小时前
console.log(howLongAgo('2022-10-09 15:30:23')); // 1 hours ago
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ------------ | ------------------ | ---- | ------ | ------ | | date | 时间 | Date/number/string | yes | - | - | | type | 显示名称类型 | string | - | cn/en | cn |

Return

string

useThrottl

程序节流

import { useThrottl } from 'ilibs';
const conso = (n: number) => console.log(n);
window.onload = () => {
	const button = document.createElement('button');
	button.style.lineHeight = '35px';
	button.innerHTML = 'submit';
	document.getElementById('app')?.appendChild(button);
	button.addEventListener('click', useThrottl(conso, 1000));
};
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | -------- | -------- | ---- | ------ | ------ | | fn | 执行函数 | Function | - | - | - | | time | 时间 | number | - | - | - |

useDebounce

程序节流

import { useDebounce } from 'ilibs';
const conso = (n: number) => console.log(n);
window.onload = () => {
	const input = document.createElement('input');
	input.style.lineHeight = '35px';
	document.getElementById('app')?.appendChild(input);
	input.addEventListener('keyup', useDebounce(conso, 1000));
};
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | -------- | -------- | ---- | ------ | ------ | | fn | 执行函数 | Function | - | - | - | | time | 时间 | number | - | - | - |

useLazyLoad

图片懒加载

import { useLazyLoad } from 'ilibs';
window.onload = () => {
	useLazyLoad(['/a.png', '/b.png', '/c.png', '/d.png']);
};
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ----------------- | -------- | ---- | ------ | ------------------------ | | tags | 图片链接集合 | string[] | yes | - | - | | node | 图片容器 dom 节点 | Element | - | - | document.documentElement |

randomNum

生成区间随机数

import { randomNum } from 'ilibs';
console.log(randomNum(100, 10000)); // 2208.79223401305
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ------ | ------ | ---- | ------ | ------ | | min | 最小值 | number | yes | - | - | | max | 最大值 | number | yes | - | - |

cloneDeep

数据深拷贝

import { cloneDeep } from 'ilibs';
const a = { a: 1 };
const b = cloneDeep(a);
b.a = 2;
console.log(a, b); //  {a: 1} {a: 2}
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---- | ---- | ---- | ------ | ------ | | data | 数据 | any | yes | - | - |

Return

any

unwarp

针对于 Proxy 对象结构

import { unwarp } from 'ilibs';
let obj = {
	a: 1,
};
let proxyObj = new Proxy(obj, {
	get: function (target, attr) {
		return target[attr]; // obj["a"]
	},
});
console.log(proxyObj); // Proxy {a: 1}
console.log(unwarp(proxyObj)); // {a: 1}
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---- | ------ | ---- | ------ | ------ | | obj | 数据 | object | yes | - | - |

Return

object

merge

针对于 Proxy 对象结构

import { merge } from 'ilibs';
let obj = {
	a: 1,
};
console.log(merge(obj, { b: 2 })); // {a: 1, b: 2}
Return

any[] | AnyObject

each

设置页面标题

import { each } from 'ilibs';
each(
	{
		a: 1,
		b: 2,
	},
	(key, index, data) => {
		console.log(key, index, data);
	},
);
// 1 'a' {a: 1, b: 2}
// 2 'b' {a: 1, b: 2}
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | -------- | -------- | -------- | ---- | ------ | ------ | | data | 数据 | any | yes | - | - | | iteratee | 回调函数 | Function | yes | - | - |

filter

数组筛选

import { filter } from 'ilibs';
console.log(filter([1, 2, 3, 4, 5, 6], (a) => a > 2));
// [3, 4, 5, 6]
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | --------- | -------- | -------- | ---- | ------ | ------ | | data | 数据 | any[] | yes | - | - | | predicate | 回调函数 | Function | yes | - | - |

push

数组筛选

import { push } from 'ilibs';
console.log(push([1, 2, 3, 4, 5, 6], 2)); // [1, 2, 3, 4, 5, 6, 2]
console.log(push([1, 2, 3, 4, 5, 6], 2, 9)); // [1, 2, 9, 4, 5, 6]
console.log(push({ a: 1, b: 2 }, 'a', 9)); // {a: 9, b: 2}
console.log(push({ a: 1, b: 2 }, 'c', 9)); // {a: 1, b: 2,c:9}
console.log(push({ a: 1, b: 2 }, { c: 1, d: 2 })); // {a: 1, b: 2, c: 1, d: 2}
console.log(
	push({ a: 1, b: 2 }, [
		{ c: 3, d: 4 },
		{ a: 11, b: 12 },
	]),
); // {a: 11, b: 12, c: 3, d: 4}
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ----- | ---------------------------------------------------- | ------------ | ---- | ------ | ------ | | data | 数据 | any[]/object | yes | - | - | | key | 数组改变时数组的下标,添加时数组添加的数据.对象的 key | any | yes | - | - | | value | 某条数据的值 | any | - | - | - |

flatter

数组扁平化处理(多维数组变成一维数组)

import { flatter } from 'ilibs';
console.log(flatter([[1, 2, 3], 4, 5, 6, [[[[7, 8], 9]]]])); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---- | ----- | ---- | ------ | ------ | | data | 数据 | any[] | yes | - | - |

setValue

设置数组/对象中对应 path 属性路径上的值,如果 path 不存在,则创建

import { setValue } from 'ilibs';
const object = {
	a: [{ b: { c: 1 } }, { b2: { c: 2 } }],
	b: 1,
	c: { c: 3 },
	d: ['2.0', ['old d.1'], ['2.2.0', '2.2.1']],
};
const array = ['0', '1', ['2.0', ['2.1.0'], ['2.2.0', '2.2.1']]];
setValue(object, 'd.1', 'new d.1');
console.log('object:', object);
// object: {
//     a: [{ 'b': { 'c': 1 } }, { 'b2': { 'c': 2 } }],
//     b: 1,
//     c: { 'c': 3 },
//     d: [
//         '2.0',
//         'new d.1',
//         ['2.2.0', '2.2.1']
//     ]
// };
setValue(array, '2.2', 4);
console.log('array:', array);
// array: [
//     '0',
//     '1',
//     [
//         '2.0',
//         4,
//         ['2.2.0', '2.2.1']
//     ]
// ]
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ----- | ------------ | ---------------------- | ---- | ------ | ------ | | data | 数据 | object/array | yes | - | - | | path | 设置值的路径 | string/string[]/Number | yes | - | - | | value | 设置的值 | any | - | - | - |

getValue

根据字符串输出对象参数,避免程序阻滞

import { getValue } from 'ilibs';
const arr = [1, 2, 3, 4, [51, 52, 53, 54, [551, 552, 553, 554, 555]]];
console.log(getValue({ a: 1, b: 2, c: { a: 11, b: 12 } }, ['c', 'a'])); // 11
console.log(getValue({ a: 1, b: 2, c: { a: 11, b: 12 } }, 'c.a')); // 11
console.log(getValue({ a: 1, b: 2, c: { a: 11, b: 12 } }, 'c.a.d', 'test')); // test
console.log(getValue(arr, '5.5.5', 'test')); // 555
console.log(getValue(arr, '5.5', 'test')); // [551,552,553,554,555]
console.log(getValue(arr, '5.5.9', 'test')); // test
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | --------------------------- | ---------------------- | ---- | ------ | ------ | | data | 数据 | object/array | yes | - | - | | key | 输出的字段路径 | string/string[]/Number | yes | - | - | | alt | 在没有获取到 value 返回的值 | any | - | - | - |

currying

柯里化处理

import { currying } from 'ilibs';
const add = (a, b, c) => a + b + c;
const a = currying(add, 5, 5);
console.log(a(2)); // 12
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | -------- | -------- | ---- | ------ | ------ | | fn | 执行函数 | Function | yes | - | - | | args | 传参 | any | yes | - | - |

templateParser

template 解析器

import { templateParser } from 'ilibs';
console.log(templateParser('<div>{{test}}</div>', { test: '测试' })); // <div>测试</div>
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | -------- | --------- | ------ | ---- | ------ | ------ | | template | html 片段 | string | yes | - | - | | data | 解析格式 | object | yes | - | - |

listToTree

列表转成树形结构

import { listToTree } from 'ilibs';
console.log(
	listToTree([
		{
			id: 1,
			text: '节点1',
			parentId: 0, //这里用0表示为顶级节点
		},
		{
			id: 2,
			text: '节点1_1',
			parentId: 1, //通过这个字段来确定子父级
		},
	]),
);
// [{"id":1,"text":"节点1","parentId":0,"children":[{"id":2,"text":"节点1_1","parentId":1}]}]
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---- | ----- | ---- | ------ | ------ | | data | 数据 | Array | yes | - | - |

treeToList

树形结构转成列表

import { treeToList } from 'ilibs';
console.log(
	treeToList([
		{
			id: 1,
			text: '节点1',
			parentId: 0,
			children: [{ id: 2, text: '节点1_1', parentId: 1 }],
		},
	]),
);
// [{"id":2,"text":"节点1_1","parentId":1},{"id":1,"text":"节点1","parentId":0}]
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---- | ----- | ---- | ------ | ------ | | data | 数据 | Array | yes | - | - |

setInterval

setInterval 重置优化

import { setInterval } from 'ilibs';
setInterval(() => {
	console.log(1);
}, 1000)();
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | --------------- | -------- | ---- | ------ | ------ | | fn | 回调执行方法 | Function | yes | - | - | | t | 执行时间 (毫秒) | number | yes | - | - |

copyjs

复制当前节点内容

import { copyjs } from 'ilibs';
const d = document.createElement('div');
d.innerHTML = '测试复制';
d.id = 'test';
document.body.appendChild(d);
setTimeout(() => {
	copyjs('#test');
}, 1000);
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | -------------- | ---------------- | ---- | ------ | ------ | | dom | 需要复制的节点 | Element / string | yes | - | - |

generateRandomHexColor

生成随机颜色

import { generateRandomHexColor } from 'ilibs';
console.log(generateRandomHexColor()); // #ffffff
Return

string

scrollTo

滚动到顶部/底部 ('top'/'bottom',默认 top)

import { scrollTo } from 'ilibs';
setTimeout(() => {
	scrollTo(document.body);
}, 1000);
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ------- | ---------------- | ---------------- | ---- | ---------- | ------ | | element | 带有滚动条的 dom | Element / string | yes | - | - | | type | 滚动的位置 | string | - | top/bottom | top |

节点操作

函数列表

| 函数名称 | 描述 | | ------------------------------------ | ----------------------- | | setIcon(url) | 设置页面 ICON | | setTitle(title) | 设置页面标题 | | loadRes(url,t,fn) | 设置页面外部引入资源 | | selectDom(tag) | 节点选择器 | | createTextNode(text) | 创建文本节点 | | htmlStringToVNode(html) | html 字符串转 node 对象 | | createDom(vnode,container) | node 对象转 dom 节点 | | setStyle(tag,style) | 设置 dom style 样式 | | setClass(tag,clas) | 设置 dom class 样式 | | removeClass(tag,clas) | 删除 dom class 样式 | | append(tag,child) | 向 dom 节点添加子节点 | | getChildNode(tag) | 获取 dom 节点的子节点 | | setTransform(tag) | 设置 dom 节点过滤 | | addListener(target,type,callback) | 设置 dom 节点事件监听 | | removeListener(target,type,callback) | 移除 dom 节点事件监听 | | remove(node) | 移除 dom 节点 | | setAttr(node,attrs) | 设置 dom 节点 attr | | getAttr(node,attrName) | 获取 dom 节点 attr |

API

setIcon

设置页面 ICON

import { setIcon } from 'ilibs';
setIcon('icon.png');
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ------------- | ------ | ---- | ------ | ------ | | url | icon 链接地址 | string | yes | - | - |

setTitle

设置页面标题

import { setTitle } from 'ilibs';
setTitle('设置页面标题');
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ----- | -------- | ------ | ---- | ------ | ------ | | title | 页面标题 | string | yes | - | - |

loadRes

设置页面外部引入资源

import { loadRes } from 'ilibs';
loadRes('body{color:red}', 'style');
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ------------ | -------- | ---- | ------------------------------ | ------ | | url | 引入内容 | string | yes | - | - | | t | 引入类型 | string | yes | script/css/style/js/javascript | - | | fn | 添加成功回调 | Function | - | - | - |

selectDom

节点选择器

import { selectDom } from 'ilibs';
console.log(selectDom('body'));
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ------------------------------------------- | ------ | ---- | ------ | ------ | | tag | 节点名称,与 document.querySelector 传参一致 | string | yes | - | - |

Return

Element

createTextNode

创建文本节点

import { createTextNode } from 'ilibs';
console.log(createTextNode('text'));
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---- | ------ | ---- | ------ | ------ | | text | 文本 | string | yes | - | - |

Return

Element

htmlStringToVNode

html 字符串转 node 对象

import { htmlStringToVNode } from 'ilibs';
console.log(htmlStringToVNode('<div>text</div>')); //  {"tag":"DIV","attrs":{},"children":[{"tag":"DIV","attrs":{},"children":["text"]}]}
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ----------- | ------ | ---- | ------ | ------ | | html | html 字符串 | string | yes | - | - |

Return

object

createDom

node 对象转 dom 节点

import { createDom } from 'ilibs';
console.log(createDom({ tag: 'DIV', attrs: {}, children: ['text'] })); //  <div>text</div>
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | --------- | ------------------------- | ------ | ---- | ------ | ------ | | vnode | node 对象 | object | yes | - | - | | container | 将 dom 节点添加到那个容器 | object | - | - | - |

Return

HTMLElement | Node | Text | null

setStyle

设置 dom style 样式

import { setStyle } from 'ilibs';
setStyle('body', {
	color: 'red',
});
setStyle('body', 'color: red');
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ----- | -------- | ------------------- | ---- | ------ | ------ | | tag | dom 节点 | HTMLElement /string | yes | - | - | | style | 样式 | object /string | yes | - | - |

Return

HTMLElement | Node | Text | null

setClass

设置 dom class 样式

import { setClass } from 'ilibs';
setClass('body', {
	'body-color': true,
	'body-margin': false,
});
setClass('body', 'body-color');
setClass('body', ['body-color', 'body-margin']);
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---------- | ---------------------- | ---- | ------ | ------ | | tag | dom 节点 | HTMLElement/string | yes | - | - | | clas | class 样式 | object/string/string[] | yes | - | - |

Return

HTMLElement | Node | Text | null

removeClass

删除 dom class 样式

import { removeClass } from 'ilibs';
removeClass('body', {
	'body-color': true,
	'body-margin': false,
});
setClass('body', 'body-color');
setClass('body', ['body-color', 'body-margin']);
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | ---------- | ---------------------- | ---- | ------ | ------ | | tag | dom 节点 | HTMLElement/string | yes | - | - | | clas | class 样式 | object/string/string[] | yes | - | - |

Return

HTMLElement | Node | Text | null

append

向 dom 节点添加子节点

import { append } from 'ilibs';
const d = document.createElement('div');
d.innerHTML = '测试复制';
d.id = 'test';
append('body', [d]);
append('body', [{ tag: 'DIV', attrs: {}, children: ['text'] }]);
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ----- | -------- | ------------------ | ---- | ------ | ------ | | tag | dom 节点 | HTMLElement/string | yes | - | - | | child | 子节点 | Array | yes | - | - |

Return

HTMLElement | Node | Text | null

getChildNode

获取 dom 节点的子节点

import { getChildNode } from 'ilibs';
console.log(getChildNode('body'));
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | -------- | ------------------ | ---- | ------ | ------ | | tag | dom 节点 | HTMLElement/string | yes | - | - |

Return

Array

setTransform

获取 dom 节点的子节点

import { setTransform } from 'ilibs';
console.log(setTransform('body'));
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | -------- | ------------------ | ---- | ------ | ------ | | tag | dom 节点 | HTMLElement/string | yes | - | - |

Return

Array

addListener

设置 dom 节点事件监听

import { addListener } from 'ilibs';
const bodyEvent = () => {
	console.log(1);
};
addListener('body', 'click', bodyEvent);
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | -------- | -------- | ------------------ | ---- | ------ | ------ | | target | dom 节点 | HTMLElement/string | yes | - | - | | type | 事件类型 | string | yes | - | - | | callback | 回调函数 | Function | yes | - | - |

removeListener

移除 dom 节点事件监听

import { addListener, removeListener } from 'ilibs';
const bodyEvent = () => {
	console.log(1);
	removeListener('body', 'click', bodyEvent);
};
addListener('body', 'click', bodyEvent);
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | -------- | -------- | ------------------ | ---- | ------ | ------ | | target | dom 节点 | HTMLElement/string | yes | - | - | | type | 事件类型 | string | yes | - | - | | callback | 回调函数 | Function | yes | - | - |

remove

移除 dom 节点

import { remove } from 'ilibs';
remove('body');
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ---- | -------- | ------------------ | ---- | ------ | ------ | | node | dom 节点 | HTMLElement/string | yes | - | - |

setAttr

设置 dom 节点 attr

import { setAttr } from 'ilibs';
setAttr('body', { style: 'color:red' });
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ----- | -------------- | ------------------ | ---- | ------ | ------ | | node | dom 节点 | HTMLElement/string | yes | - | - | | attrs | 节点 attr 对象 | object | - | - | - |

getAttr

获取 dom 节点 attr

import { getAttr } from 'ilibs';
getAttr('body');
API

| 参数 | 描述 | 类型 | 必填 | 可选值 | 默认值 | | ----- | -------------- | ------------------ | ---- | ------ | ------ | | node | dom 节点 | HTMLElement/string | yes | - | - | | attrs | 节点 attr 对象 | object | - | - | - |