All files / array/src swap.ts

100% Statements 7/7
100% Branches 1/1
100% Functions 3/3
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                                    3x 1x 3x 3x 3x 3x     3x    
/**
 * Swaps the elements at the given indexes of an {@link Array}.
 *
 * @mutation
 *
 * @exmaple
 * ```ts
 * const array = [1, 2, 3];
 *
 * swap(1, 2)(array);
 *
 * console.log(array); // [1, 3, 2]
 * ```
 *
 * @param array
 * @param indexA
 * @param indexB
 */
export const swap =
  (indexA: number, indexB: number) =>
  (array: unknown[]): void => {
    if (process.env.NODE_ENV !== "production") {
      console.assert(indexA >= 0);
      console.assert(indexB >= 0);
    }
 
    [array[indexA], array[indexB]] = [array[indexB], array[indexA]];
  };