UNPKG

foop

Version:

interfaces that describe their intentions.

50 lines (44 loc) 3.41 kB
var preAllocate = require('./preAllocate') /** * @name spliceIn * @since 5.0.0 beta.6 * @memberOf array * * @param {Array} array array to splice * @param {number} idx index to splice at * @param {boolean} [canEdit=false] should mutate * @return {Array} * * {@link https://github.com/facebook/immutable-js/blob/master/src/Map.js#L930 immutable-js-splice-in} * @see {@link immutable-js-splice-in} * * @example * * spliceIn(['zero', 'one'], 1) * //=> ['zero'] * * spliceIn(['zero', 'one'], 0) * //=> ['one'] * * spliceIn(['zero', 'one'], 0, true) * //=> ['one'] * */ module.exports = function spliceOut(array, idx, canEdit) { var newLen = array.length - 1 // @TODO why no `shift` ? if (canEdit && idx === newLen) { array.pop() return array } var newArray = preAllocate(newLen) var after = 0 for (var ii = 0; ii < newLen; ii++) { if (ii === idx) { after = 1 } newArray[ii] = array[ii + after] } return newArray } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaWNlT3V0LmpzIiwic291cmNlcyI6WyJzcGxpY2VPdXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcHJlQWxsb2NhdGUgPSByZXF1aXJlKCcuL3ByZUFsbG9jYXRlJylcblxuLyoqXG4gKiBAbmFtZSBzcGxpY2VJblxuICogQHNpbmNlIDUuMC4wIGJldGEuNlxuICogQG1lbWJlck9mIGFycmF5XG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgYXJyYXkgdG8gc3BsaWNlXG4gKiBAcGFyYW0ge251bWJlcn0gaWR4IGluZGV4IHRvIHNwbGljZSBhdFxuICogQHBhcmFtIHtib29sZWFufSBbY2FuRWRpdD1mYWxzZV0gc2hvdWxkIG11dGF0ZVxuICogQHJldHVybiB7QXJyYXl9XG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9pbW11dGFibGUtanMvYmxvYi9tYXN0ZXIvc3JjL01hcC5qcyNMOTMwIGltbXV0YWJsZS1qcy1zcGxpY2UtaW59XG4gKiBAc2VlIHtAbGluayBpbW11dGFibGUtanMtc3BsaWNlLWlufVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgc3BsaWNlSW4oWyd6ZXJvJywgJ29uZSddLCAxKVxuICogICAgLy89PiBbJ3plcm8nXVxuICpcbiAqICAgIHNwbGljZUluKFsnemVybycsICdvbmUnXSwgMClcbiAqICAgIC8vPT4gWydvbmUnXVxuICpcbiAqICAgIHNwbGljZUluKFsnemVybycsICdvbmUnXSwgMCwgdHJ1ZSlcbiAqICAgIC8vPT4gWydvbmUnXVxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzcGxpY2VPdXQoYXJyYXksIGlkeCwgY2FuRWRpdCkge1xuICBjb25zdCBuZXdMZW4gPSBhcnJheS5sZW5ndGggLSAxXG5cbiAgLy8gQFRPRE8gd2h5IG5vIGBzaGlmdGAgP1xuICBpZiAoY2FuRWRpdCAmJiBpZHggPT09IG5ld0xlbikge1xuICAgIGFycmF5LnBvcCgpXG4gICAgcmV0dXJuIGFycmF5XG4gIH1cblxuICBjb25zdCBuZXdBcnJheSA9IHByZUFsbG9jYXRlKG5ld0xlbilcblxuICBsZXQgYWZ0ZXIgPSAwXG4gIGZvciAobGV0IGlpID0gMDsgaWkgPCBuZXdMZW47IGlpKyspIHtcbiAgICBpZiAoaWkgPT09IGlkeCkge1xuICAgICAgYWZ0ZXIgPSAxXG4gICAgfVxuICAgIG5ld0FycmF5W2lpXSA9IGFycmF5W2lpICsgYWZ0ZXJdXG4gIH1cblxuICByZXR1cm4gbmV3QXJyYXlcbn1cbiJdLCJuYW1lcyI6WyJjb25zdCIsImxldCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkI1QyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO0VBQ3ZEQSxHQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQzs7O0VBRy9CLElBQUksT0FBTyxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7SUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRTtJQUNYLE9BQU8sS0FBSztHQUNiOztFQUVEQSxHQUFLLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7O0VBRXBDQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUM7RUFDYixLQUFLQSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ2xDLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRTtNQUNkLEtBQUssR0FBRyxDQUFDO0tBQ1Y7SUFDRCxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7R0FDakM7O0VBRUQsT0FBTyxRQUFRO0NBQ2hCOyJ9