@orca-fe/tools
Version:
front-end tools
69 lines (68 loc) • 1.7 kB
JavaScript
/* 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;
}