UNPKG

indexed

Version:

database-like indexed array that always returns a new array

120 lines (108 loc) 2.59 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.some = some; exports.map = map; exports.fill = fill; exports.find = find; exports.getIndex = getIndex; exports.get = get; exports.has = has; var _arrayIndexes = require('./array-indexes'); var _constants = require('./constants'); function some(props, arr, callback, thisArg) { var length = arr.length;var i = 0; while (i < length) { var val = arr[i]; var result = callback.call(thisArg, val, i, arr); if (result === _constants.BREAK) { return false; } if (result === _constants.SKIP) { i++;continue; } if (result == true) { return true; } i++; } return false; } function map(props, arr, callback, thisArg) { var length = arr.length;var i = 0;var newArr = []; while (i < length) { var val = arr[i]; var result = callback.call(thisArg, val, i, arr); if (result === _constants.BREAK) { return newArr; } if (result === _constants.SKIP) { i++;continue; } newArr.push(result); i++; } return newArr; } function fill(props, arr, value, start, end) { throw new Error('fill cannot not be used'); } function find(props, arr, callback, thisArg) { var indexes = props.indexes; if (typeof callback == 'function') { return _constants.arrProto.find.call(arr, callback, thisArg); } var index = (0, _arrayIndexes.findIndexInIndexes)(indexes, callback, arr, thisArg); if (index < 0) { return; } return arr[index]; } function getIndex(props, arr, indexName, key) { var indexes = props.indexes; if (!indexes || !indexName) { return key ? -1 : undefined; } if (!indexes.has(indexName)) { return key ? -1 : undefined; } function getIndexInIndex(key) { var index = (0, _arrayIndexes.getIndexInIndexes)(indexes, indexName, key); return index; } return key ? getIndexInIndex(key) : getIndexInIndex; } function get(props, arr, indexName, key) { if (!key && typeof indexName == 'number') { return arr[indexName]; } var indexes = props.indexes; if (!indexes || !indexName) { return; } if (!indexes.has(indexName)) { return; } function getInIndex(key) { var index = (0, _arrayIndexes.getIndexInIndexes)(indexes, indexName, key); if (index < 0) { return; } return arr[index]; } return key ? getInIndex(key) : getInIndex; } function has(props, arr, indexName, key) { var indexes = props.indexes; if (!indexes || !indexName) { return false; } if (!indexes.has(indexName)) { return false; } function hasInIndex(key) { return indexes.get(indexName).has(key); } return key ? hasInIndex(key) : hasInIndex; }