UNPKG

diginext-utils

Version:
298 lines 8.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.moveArray = exports.moveIndex = exports.shuffle = exports.getHalfRandom = exports.getRandom = exports.removeItemByKey = exports.removeItem = exports.allMatchInArray = exports.mergeAndMakeUniqueElement = exports.randomElement = exports.randomIndex = exports.lastElement = exports.firstElement = exports.sortElementByNumber = exports.sortElementByString = exports.maxArray = exports.minArray = exports.averageArray = exports.sumArray = void 0; const randomInt_1 = require("./math/randomInt"); const sumArray = (array, key) => { if (!array) { console.warn("ARRAY NOT EXITED !"); return 0; } if (key) return array.reduce((c, v) => c + v[key], 0); else return array.reduce((c, v) => c + v, 0); }; exports.sumArray = sumArray; /** * * @param {Array} array * @param {string} key * @returns {Number} */ const averageArray = (array, key) => { if (!array) { console.warn("ARRAY NOT EXITED !"); return 0; } return (0, exports.sumArray)(array, key) / array.length || 0; }; exports.averageArray = averageArray; /** * * @param {Array} array * @param {string} key * @returns {Number} */ const minArray = (array, key) => { if (!array) { console.warn("ARRAY NOT EXITED !"); return 0; } if (array.length > 0) { if (key) return array.reduce((c, v) => (c < v[key] ? c : v[key])); else return array.reduce((c, v) => (c < v ? c : v)); } return 0; }; exports.minArray = minArray; /** * * @param {Array} array * @param {string} key * @returns {Number} */ const maxArray = (array, key) => { if (!array) { console.warn("ARRAY NOT EXITED !"); return 0; } if (array.length > 0) { if (key) return array.reduce((c, v) => (c > v[key] ? c : v[key])); else return array.reduce((c, v) => (c > v ? c : v)); } return 0; }; exports.maxArray = maxArray; /** * * @param {Array} array * @param {string} key * @returns {Array} */ const sortElementByString = (array, key) => { if (!Array.isArray(array)) return []; if (key) return array.sort((x, y) => { var a = x[key].toUpperCase(), b = y[key].toUpperCase(); return a == b ? 0 : a > b ? 1 : -1; }); return []; }; exports.sortElementByString = sortElementByString; /** * * @param {Array} array * @param {string} key * @returns {Array} */ const sortElementByNumber = (array, key) => { if (!Array.isArray(array)) return []; if (key) return array.sort((a, b) => { return a[key] - b[key]; }); return []; }; exports.sortElementByNumber = sortElementByNumber; /** * * @param {Array} array * @returns {any} */ const firstElement = (array) => { if (array) if (array.length || array.length > 0) return array[0]; return null; }; exports.firstElement = firstElement; /** * * @param {Array} array * @returns {any} */ const lastElement = (array) => { if (array) if (array.length || array.length > 0) return array[array.length - 1]; return null; }; exports.lastElement = lastElement; /** * * @param {Array} array * @returns {any} */ const randomIndex = (array) => { if (array) return (0, randomInt_1.randomInt)(0, array.length - 1); return -1; }; exports.randomIndex = randomIndex; /** * * @param {Array} array * @returns {any} */ const randomElement = (array) => { if (array) return array[(0, exports.randomIndex)(array)]; return null; }; exports.randomElement = randomElement; /** * Remove same elements from 2 arrays */ const mergeAndMakeUniqueElement = (list1, list2, key) => { if (!list1 || !list2) return; if (key) { return list1.concat(list2).filter((item, index, self) => { return self.findIndex((x) => x[key] == item[key]) === index; }); } else { return list1.concat(list2).filter((x, index, self) => { return self.indexOf(x) === index; }); } }; exports.mergeAndMakeUniqueElement = mergeAndMakeUniqueElement; /** * check target == toMatch * @param {Array} target * @param {Array} toMatch * @returns {Boolean} */ const allMatchInArray = (target, toMatch) => { if (!target || !toMatch) return false; const found = toMatch.every((item) => { return target.includes(item); }); return found; }; exports.allMatchInArray = allMatchInArray; const removeItem = (item, array) => { const index = array.indexOf(item); if (index == -1) { console.warn("[ArrayExtra.removeItem] Item not found."); return array; } array.splice(index, 1); return array; }; exports.removeItem = removeItem; const removeItemByKey = (key, value, array) => { const foundIndex = array.findIndex((item) => { return item[key] == value; }); if (foundIndex < 0) { console.warn("[ArrayExtra.removeItemByKey] Item not found.", key, value); return array; } array.splice(foundIndex, 1); return array; }; exports.removeItemByKey = removeItemByKey; const getRandom = (array, n) => { n = n || array.length; var result = new Array(n), len = array.length, taken = new Array(len); if (n > len) throw new RangeError("getRandom: more elements taken than available"); while (n--) { var x = Math.floor(Math.random() * len); result[n] = array[x in taken ? taken[x] : x]; taken[x] = --len in taken ? taken[len] : len; } return result; }; exports.getRandom = getRandom; /** * Get an array with shuffle element */ const getHalfRandom = (array, n) => { var n = Math.ceil(array.length / 2); return (0, exports.getRandom)(array, n); }; exports.getHalfRandom = getHalfRandom; /** * Make array shuffle itself */ const shuffle = (array) => { var i = array.length, j, temp; if (array.length < 1) return array; while (--i) { j = Math.floor(Math.random() * (i + 1)); temp = array[i]; array[i] = array[j]; array[j] = temp; } return array; }; exports.shuffle = shuffle; /** * * @param {Array} array * @param {Number} oldIndex * @param {Number} newIndex * @returns {Array} */ const moveIndex = (array, oldIndex, newIndex) => { if (newIndex >= array.length) { var k = newIndex - array.length + 1; while (k--) { array.push(undefined); } } array.splice(newIndex, 0, array.splice(oldIndex, 1)[0]); return array; }; exports.moveIndex = moveIndex; const moveArray = (array, oldIndex, newIndex) => { while (oldIndex < 0) { oldIndex += array.length; } while (newIndex < 0) { newIndex += array.length; } if (newIndex >= array.length) { var k = newIndex - array.length; while (k-- + 1) { array.push(999); } } array.splice(newIndex, 0, array.splice(oldIndex, 1)[0]); return array; }; exports.moveArray = moveArray; const xarray = { sumArray: exports.sumArray, averageArray: exports.averageArray, minArray: exports.minArray, maxArray: exports.maxArray, sortElementByString: exports.sortElementByString, sortElementByNumber: exports.sortElementByNumber, firstElement: exports.firstElement, lastElement: exports.lastElement, randomIndex: exports.randomIndex, randomElement: exports.randomElement, mergeAndMakeUniqueElement: exports.mergeAndMakeUniqueElement, allMatchInArray: exports.allMatchInArray, removeItem: exports.removeItem, removeItemByKey: exports.removeItemByKey, getRandom: exports.getRandom, getHalfRandom: exports.getHalfRandom, shuffle: exports.shuffle, moveIndex: exports.moveIndex, moveArray: exports.moveArray, }; exports.default = xarray; //# sourceMappingURL=array.js.map