UNPKG

@iicoding/utils

Version:

Browser 端 - 类型判断 - 类似 koa 的异步compose - sleep - 扩展对象属性 - 扩展 storage 对象功能

163 lines (161 loc) 4.49 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/array/index.ts var array_exports = {}; __export(array_exports, { arrayDiff: () => arrayDiff, computeNeighborTwoSum: () => computeNeighborTwoSum, filterNumberArray: () => filterNumberArray, generateNumberArray: () => generateNumberArray, generateSpecifyValueAndLengthArray: () => generateSpecifyValueAndLengthArray, getAllPossibleCompose: () => getAllPossibleCompose, getSourceItemInTarget: () => getSourceItemInTarget, multiAreaPossibleCompose: () => multiAreaPossibleCompose, objectSort: () => objectSort, shuffle: () => shuffle, specialNumberData: () => specialNumberData }); module.exports = __toCommonJS(array_exports); var import_type_detection = require("../type-detection"); var arrayDiff = (source, target) => { return source.filter((item) => target.includes(item)); }; var computeNeighborTwoSum = (datasource, subtractionNumber) => { if (!Array.isArray(datasource)) return []; const source = [...datasource]; const result = []; while (source.length > 1) { const [one, two] = source; const sum = one + two; if ((0, import_type_detection.isNumber)(sum)) { result.push( subtractionNumber ? sum > subtractionNumber ? sum - subtractionNumber : sum : sum ); source.shift(); } } return Array.from(new Set(result)).sort((a, b) => a - b); }; var specialNumberData = () => [ 6, 15, 17, 22, 23, 29, 31, 32, 37, 40, 43, 46, 49, 52, 53, 58, 59, 60, 66, 67, 68, 69, 74, 75, 76, 77, 80 ]; var shuffle = (arr) => { for (let i = arr.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [arr[i], arr[j]] = [arr[j], arr[i]]; } return arr; }; var generateNumberArray = (length, startIndex = false) => { return [...Array.from({ length }, (_, i) => startIndex ? i : i + 1)]; }; var generateSpecifyValueAndLengthArray = (length, value) => Array.from({ length }, () => value); var getSourceItemInTarget = (source, target) => { return target.filter((item) => source.includes(item)); }; var objectSort = (source, sortProperties, defaultValue) => { if (Array.isArray(source)) { source.sort((a, b) => { return (a[sortProperties] || defaultValue) - (b[sortProperties] || defaultValue); }); } }; var filterNumberArray = (source) => { return Array.from( new Set(source.filter((item) => (0, import_type_detection.isNumber)(item) && !Number.isNaN(item))) ); }; var getAllPossibleCompose = (list, options) => { const result = []; if (!Array.isArray(list)) { console.warn("请传入一个数字组成的数组"); return result; } const uniqList = filterNumberArray(list); const { max = 80, // continuous = 3, minLength = 5 } = options || {}; const clwArrayLen = uniqList.length; if (clwArrayLen > max) { console.warn("数组最大长度超出限制", max); return result; } if (clwArrayLen < minLength) { console.warn("数组不满足最小长度", minLength); return result; } const temp = []; function cwlBackTrack(start) { if (temp.length === minLength) { result.push([...temp]); return; } for (let i = start; i < clwArrayLen; i++) { temp.push(uniqList[i]); cwlBackTrack(i + 1); temp.pop(); } } cwlBackTrack(0); return result; }; var multiAreaPossibleCompose = () => { }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { arrayDiff, computeNeighborTwoSum, filterNumberArray, generateNumberArray, generateSpecifyValueAndLengthArray, getAllPossibleCompose, getSourceItemInTarget, multiAreaPossibleCompose, objectSort, shuffle, specialNumberData });