All files / libs arrays.ts

100% Statements 23/23
100% Branches 9/9
100% Functions 4/4
100% Lines 19/19

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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  13x 1x   12x         1x     11x 11x   11x 11x   11x 12x 5x       6x       2x 2x   2x 10x     2x       2x   8x        
function arraysEqual(oldArray: unknown[], newArray: unknown[]): boolean {
  if (oldArray === newArray) {
    return true;
  }
  if (
    oldArray === null ||
    newArray === null ||
    oldArray.length !== newArray.length
  ) {
    return false;
  }
 
  const _oldArray = [...oldArray];
  const _newArray = [...newArray];
 
  _oldArray.sort();
  _newArray.sort();
 
  for (let i = 0; i < _oldArray.length; i++) {
    if (JSON.stringify(_oldArray[i]) !== JSON.stringify(_newArray[i])) {
      return false;
    }
  }
 
  return true;
}
 
function arrayChunk<T>(arr: T[], chunkSize: number): T[][] {
  const chunks: T[][] = [];
  const arrCopy = arr.slice(0);
 
  for (let i = 0, ii = arrCopy.length; i < ii; i += chunkSize) {
    chunks.push(arrCopy.splice(0, chunkSize));
  }
 
  return chunks;
}
 
function arraysMerge(arr1: unknown[], arr2: unknown[]): unknown[] {
  const arr3 = [...arr1, ...arr2];
 
  return arr3.filter((item, i) => arr3.indexOf(item) === i);
}
 
export { arraysEqual, arrayChunk, arraysMerge };