工具 - 收集单行方法

46 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

前言

作为资深CV工程师,有些东西是需要准备的。

sleep

当前进程暂停固定时长后继续执行。

const sleep = (time) => new Promise(resolve => setTimeout(resolve, time))

// 使用 
await sleep(3 * 1000)

git 地址提取文件夹名称

字符串切割结合reverse获取。

const REMOTE = "https://github.com/project/classification.git"
const remote_dir = REMOTE.split('/').reverse()[0].split('.')[0]

初始化一个数组

给定指定长度,初始化一个数组。

const mockArr = Array(10).fill(null).map((item,idx) => {id: idx, name: 'Tom'})

chunk

将数组块划分为指定大小的较小数组。

使用Array.from()创建新的数组, 这符合将生成的区块数。使用Array.slice()将新数组的每个元素映射到size长度的区块。如果原始数组不能均匀拆分, 则最终的块将包含剩余的元素。

const chunk = (arr, size) =>
Array.from({length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size));
// chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]]

difference 两数组差异

返回两个数组之间的差异。

b创建Set, 然后使用Array.filter()on 只保留a``b中不包含的值.

const difference = (a, b) => { const s = new Set(b); return a.filter(x => !s.has(x)); };
// difference([1,2,3], [1,2,4]) -> [3]

similarity 两数组交集

返回两个数组中都显示的元素的数组。

使用filter()可删除不属于values的值, 使用includes()确定.

const similarity = (arr, values) => arr.filter(v => values.includes(v));
// similarity([1,2,3], [1,2,4]) -> [1,2]

union

返回在两个数组中的任意一个中存在的每个元素。

创建一个Set, 其中包含ab的所有值, 并将其转换为数组。

const union = (a, b) => Array.from(new Set([...a, ...b]));
// union([1,2,3], [4,3,2]) -> [1,2,3,4]

pick

从对象中选取对应于给定键的键值对。

使用Array.reduce()将筛选/选取的密钥转换回具有相应键值对的对象 (如果在 obj 中存在该键)。

const pick = (obj, arr) =>
arr.reduce((acc, curr) => (curr in obj && (acc[curr] = obj[curr]), acc), {});
// pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c']) -> { 'a': 1, 'c': 3 }

remove

从数组中移除给定函数返回false的元素. 使用Array.filter()查找返回 truthy 值的数组元素和Array.reduce()以使用Array.splice()删除元素。使用三参数 (func``value, index, array调用函数).

const remove = (arr, func) =>
Array.isArray(arr) ? arr.filter(func).reduce((acc, val) => {
arr.splice(arr.indexOf(val), 1); return acc.concat(val);
}, [])
: [];
// remove([1, 2, 3, 4], n => n % 2 == 0) -> [2, 4]

工具函数集合。持续更新~~~