工具类
线上示例 ☟
Online
- 多个实例应用融合
更新日志
1.0.7
-
优化 Map、Set 在使用 each 时的中断逻辑
let ret, map = new Map(); map.set(10, 20); map.set('a', 2); ret = each(map, (k, v) = { if (v == 2) return k; }); // ret: a
Between
// 区间取值
const soei = require("@soei/tools");
let Between = soei.Between;
// 或
import { Between } from "@soei/tools";
data = new Between({
/* 是否含有小数输出, 默认为0, 整数 */
// decimal: 3,
max: 90,
min: 20,
});
data.fire(20.01);
// 20
data.fire(2);
// 20
data.fire(2, true /* 是否正在输入, 当为true时不直接返回最大最小值 */);
// 2
data = new Between({
decimal: 3,
max: 1,
min: 0,
});
data.fire(20);
// 1.000
data.fire("0.0");
// 0.000
data.fire("0.0", true);
// 0.0
data.fire(0.0, true);
// 0
merge
// 合并
const soei = require("@soei/tools");
let merge = soei.merge;
// 或
import { merge } from "@soei/tools";
// 合并
merge(args1, args2[,..., true, "mix"])
// ### 用法一
// 基本用法
merge(args1, args2)
let a = { name: "Joy" };
let b = { name: "Band", age: 10 };
merge(a, b);
// a : {name: 'Joy', age: 10}
// b : {name: 'Band', age: 10}
// ### 用法二
// 强制覆盖
merge(args1, args2, args3, true)
// - args1, args2 为接收方
// - args3 为属性输出方
let a = { name: "Joy" };
let b = { name: "Band", age: 10 };
let c = { name: "Juerry" };
// 这里以 c 为模版, 把 c 中的属性强制覆盖到 前面的一个或者多个对象中去
merge(a, b, c, true);
// a, b为接收方
// a : {name: 'Juerry'}
// b : {name: 'Juerry', age: 10}
// c : {name: 'Juerry'}
// ### 用法三
// 多参数
merge(args1, args2, args3)
// - args1, args2 为接收方
// - args3 为属性输出方
let a = { name: "Joy" };
let b = { name: "Band", age: 10 };
merge(a, b, {
age: 11,
});
// a, b为接收方
// a : {name: 'Joy', age: 11}
// b : {name: 'Band', age: 10}
// ### 用法四
// 末尾参数为 "mix" 时, args1 为接收方, 其他参数均为属性输出方
merge(args1, args2[,...], "mix")
let a = { name: "Joy" };
let b = { name: "Band" };
let c = { name: "Juerry", age: 10 };
// 参数1, 参数2
merge(a, b, c, "mix");
// a为接收方 b, c为属性输出方
// a: { name: 'Joy', age: 10 }
// b: { name: 'Band' }
// c: { name: "Juerry", age: 10 }
// ### 用法五
merge(args1, args2[,...], true, "mix")
// true 和 mix 的混合使用
// 最终属性值取决于最后一次出现的属性
let a = { name: "Joy" };
let b = { name: "Band" };
let c = { name: "Juerry", age: 11 };
merge(a, b, c, true, "mix");
// a为接收方 b, c为属性输出方
// a: {name: 'Juerry', age: 11}
// b: {name: 'Band'}
// c: {name: 'Juerry', age: 11}
each
const soei = require("@soei/tools");
let each = soei.each;
// 或
import { each } from "@soei/tools";
each({ a: 1, b: 2 }, (k, v) => {
console.log(k, v);
});
// 输出:
// a 1
// b 2
each([1, 2], (k, v) => {
// 如果打开注释, 如条件满足,则不再输出,直接跳出循环
// if(v >= 1) return true;
console.log(k, v);
});
// 输出:
// 0 1
// 1 2
/**
* 这里的 ...对应handle(key, item, ...)
* each(source, handle [, ...])
* each({}, (key, item, v1, v2, v3) => {
* v1 == 1
* v2 == 2
* v3 == 3
* }, 1, 2, 3)
*/
each(
[1, 2],
(k, v, target /* each的第三个参数, 以此类推... */) => {
console.log(target);
/* 输出:
{
1: 2,
2: 3
}
*/
},
{
1: 2,
2: 3,
}
);
runer
const soei = require("@soei/tools");
let runer = soei.runer;
// 或
import { runer } from "@soei/tools";
runer(
function (a, z) {
return `this is ${this.name} ${a} ${z}`;
},
{
name: "loop",
},
1,
2
);
// 输出: this is loop 1 2
iList2Array
const soei = require("@soei/tools");
let iList2Array = soei.iList2Array;
// 或
import { iList2Array } from "@soei/tools";
// 转换数组
let array = iList2Array(arguments);
iSplit
const soei = require("@soei/tools");
let iSplit = soei.iSplit;
// 或
import { iSplit } from "@soei/tools";
// 转换数组
let array = iSplit("name|age;weight");
// ['name', 'age', 'weight']
let array = iSplit("name,age", ",");
// ['name', 'age']