kits-core
Version:
Kits core module
167 lines (150 loc) • 4.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getValNearest = exports.insertArrayToArray = exports.remove_object_element = exports.array_move_item_by_value = exports.swap_element_by_value = exports.swap_element_by_index = exports.array_move_item = undefined;
var _lodash = require('lodash');
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/**
*
* @param arr
* @param old_index
* @param new_index
* Input: [1,2,3,5,12,6]
* Move item from index 3 to index 5 (move 5 to end array)
* Output: [1,2,3,12,6,5]
* Console.log(array_move([1, 2, 3 , 5, 12 , 6], 3, 5));
*
*/
var array_move_item = exports.array_move_item = function array_move_item(arr, old_index, new_index) {
if (new_index >= arr.length) {
var k = new_index - arr.length + 1;
while (k--) {
arr.push(undefined);
}
}
arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
return arr;
};
/**
*
* @param arr
* @param fromKeyElement
* @param toKeyElement
* Input: Map or Array
* Example for Map: 1: {a}, 2: {b}, 3: {c}
* swap item from position 1 to position 3 (move 3 to 1)
* Output: 3:{c}, 2:{b}, 1: {a}
*
*/
var swap_element_by_index = exports.swap_element_by_index = function swap_element_by_index(arr, fromKeyElement, toKeyElement) {
var cloneArr = arr;
var tmp = cloneArr[fromKeyElement];
cloneArr[fromKeyElement] = cloneArr[toKeyElement];
cloneArr[toKeyElement] = tmp;
return cloneArr;
};
/**
*
* @param arr
* @param fromValue
* @param toValue
* similar swap_element_by_index
*
*/
var swap_element_by_value = exports.swap_element_by_value = function swap_element_by_value(arr, fromValue, toValue) {
var fromKeyElement = 0;
var toKeyElement = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] === fromValue) {
fromKeyElement = i;
} else if (arr[i] === toValue) {
toKeyElement = i;
}
}
return swap_element_by_index(arr, fromKeyElement, toKeyElement);
};
var array_move_item_by_value = exports.array_move_item_by_value = function array_move_item_by_value(arr, fromValue, toValue) {
var fromKeyElement = 0;
var toKeyElement = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] === fromValue) {
fromKeyElement = i;
} else if (arr[i] === toValue) {
toKeyElement = i;
}
}
return array_move_item(arr, fromKeyElement, toKeyElement);
};
/**
*
* @param arr
* @param objectRemove
* Input: Array
* Đố bạn biết mình sắp ghi gì?
*
*/
var remove_object_element = exports.remove_object_element = function remove_object_element(arr, objectRemove) {
var cloneArr = [].concat(_toConsumableArray(arr));
cloneArr.forEach(function (val, ind) {
if ((0, _lodash.isEqual)(val, objectRemove) || val === objectRemove) {
cloneArr.splice(ind, 1);
}
});
return cloneArr;
};
var insertArrayToArray = exports.insertArrayToArray = function insertArrayToArray(arrSource, arrInsert, indexInsert) {
var arrayDest = [];
for (var i = 0; i < arrSource.length; i++) {
if (i === indexInsert) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = arrInsert[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var item = _step.value;
arrayDest.push(item);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
arrayDest.push(arrSource[i]);
} else {
arrayDest.push(arrSource[i]);
}
}
return arrayDest;
};
/**
* Get value nearest with goalValue
* @param array
* @param goalValue
* @param target
* Input: [1,2,3,5,12,6] goal = 11, target = true
* Output: 12
* Input: [1,2,3,5,12,6] goal = 11, target = false
* Output: 5
*
*/
var getValNearest = exports.getValNearest = function getValNearest(array, goalValue, target) {
for (var i = 0; i < array.length; i++) {
if (target === true) {
if (array[i] > goalValue) {
return array[i - 1] || 0;
}
} else if (array[i] >= goalValue) {
return array[i];
}
}
};