- Comparing array length
- Comparing value without types using double equals
const arrA = [4, 4];
const arrB = [4, 4];
function isEqualsArray(arrA, arrB) {
if (arrA.length != arrB.length) {
return false;
}
let isSameAll = arrA.every((valueA, indexA) => valueA == arrB[indexA]);
return isSameAll;
}
console.log(isEqualsArray(arrA, arrB))
But, The array could have object value, so you need primitive and object equals function.
See more good often source. Like lodash.
https://github.com/lodash/lodash/blob/master/.internal/equalArrays.js
Additional contents.
import { isEqualsArray } from './isEqualsArray';
describe('isEqualsArray', () => {
test('number tuples', () => {
const arrA: [number, number] = [4, 4];
const arrB: [number, number] = [4, 4];
expect(isEqualsArray(arrA, arrB)).toBe(true);
});
test('primitive tuples wihout object', () => {
const arrA: [boolean, number] = [false, 4];
const arrB: [boolean, number] = [true, 4];
expect(isEqualsArray(arrA, arrB)).toBe(false);
});
test('primitive tuples wihout object2', () => {
const arrA: [string, number] = ['almel', 4];
const arrB: [string, number] = ['shun', 4];
expect(isEqualsArray(arrA, arrB)).toBe(false);
});
test('primitive tuples wihout object3', () => {
const arrA: [string, number] = ['almel', 1];
const arrB: [string, boolean] = ['almel', true];
expect(isEqualsArray(arrA, arrB)).toBe(true); // because of double equals, so number and boolean are equals
});
// if you think this solution, you don't know js.
test('Double equals', () => {
const arrA: [number, number] = [4, 4];
const arrB: [number, number] = [4, 4];
expect(arrA == arrB).toBe(false);
});
});
I tested my codes with ts-jest. These tests are passed all.
javascript deosn't have tuple types... This is array in javascript world.