UNPKG

@orca-fe/tools

Version:
69 lines (68 loc) 1.7 kB
/* eslint-disable no-param-reassign */ import produce from 'immer'; export var insertArr = (arr, index, newItem) => { var newArr = arr.slice(); newArr.splice(index, 0, newItem); return newArr; }; export var changeArr = (arr, index, newItem) => produce(arr, _arr => { // @ts-expect-error _arr[index] = newItem; }); export var removeArrIndex = (arr, ...index) => { var cache = new Set(index); var newArr = []; for (var i = 0; i < arr.length; i++) { var _item = arr[i]; if (!cache.has(i)) { newArr.push(_item); } } return newArr; }; export var toggleArr = (arr, item, // eslint-disable-next-line eqeqeq compare = (a, b) => a == b) => { var includes = false; var filterData = arr.filter(t => { var r = compare(t, item); if (r) { includes = r; } return !r; }); if (!includes) { return [...arr, item]; } return filterData; }; /** * 遍历数组,并获取 键值缓存 * @param arr 数组 * @param callback 回调函数,用于获取指定键值,默认取 item.key */ export function arr2Keys(arr, callback = item => item['key']) { var set = new Set(); arr.forEach((item, index, array) => { var key = callback(item, index, array); if (key !== null) { set.add(key); } }); return set; } /** * 遍历数组,并获取 key-value 缓存 * @param arr 数组 * @param callback 回调函数,用于获取指定键值,默认取 item.key */ export function arr2KeyValues(arr, callback = item => item['key']) { var set = new Map(); arr.forEach((item, index, array) => { var key = callback(item, index, array); if (key !== null) { set.set(key, item); } }); return set; }