JSFiddle - React, Tailwind, and code Playground

by Lisa French

JavaScript

// const arr1 = [1,2];
// const arr2 = [1,2,3];

const arr1 = [];

function areArraysDuplicated(arrValue) {
  return arrValue.filter((index, value) => arrValue.indexOf(value) === index);
}

const areArraysEqual = (arr1, arr2) => {
  const arr1WithoutDuplicates = arr1 ? areArraysDuplicated(arr1) : [];
  const arr2WithoutDuplicates = arr2 ? areArraysDuplicated(arr2) : [];
  
  console.log("arr1WithoutDuplicates", arr1WithoutDuplicates);
  
  if (arr1 === null || arr2 === null) {
    return false;
  }
 
  if (!arr2) {
    return false;
  }
  
  const notArray = Array.isArray(arr1) || Array.isArray(arr2);
  const arraysNotSameLength = arr1.length !== arr2.length ? true : false;
  
  if (!notArray || arraysNotSameLength) {
    return false;
  } else {
    const trueOrFalseArray = arr1.map((value, index) => {
      if (arr1.includes(arr2[index])) {
        return true;
      } else {
        return false;
      }
    });
    const everythingTrue = trueOrFalseArray.every((item) => item === true);
    return everythingTrue;
  }
};

QUnit.test('Exactness', ( assert ) => {
  assert.ok(areArraysEqual([1, 2, 3], [1, 2, 3]));
  assert.notOk(areArraysEqual([1, 2, 3], [1, 2]));
  assert.notOk(areArraysEqual([1, 2], [1, 2, 3]));
  assert.notOk(areArraysEqual([1, 2, 4, 4], [1, 2, 3, 4]));
});

QUnit.test('Exceptions', ( assert ) => {
  assert.ok(areArraysEqual([], []));
  assert.notOk(areArraysEqual(1, 1));
  assert.notOk(areArraysEqual([]));
  assert.notOk(areArraysEqual([], true));
  assert.notOk(areArraysEqual([], undefined));
  assert.notOk(areArraysEqual(null, []));
  assert.notOk(areArraysEqual([], "string"));
  assert.notOk(areArraysEqual([], {}));
});

QUnit.test('Order does not matter', ( assert ) => {
  assert.ok(areArraysEqual([1, 10, 2, 21], [1, 2, 10, 21]));
});

QUnit.test('Duplicates do not matter', ( assert ) => {
  assert.ok(areArraysEqual([1, 10, 2, 21], [1, 2, 2, 10, 21]));
});
	
// QUnit.test('Compare Collections based on property', ( assert ) => {
//   const...