Expect Arrays to be equal ignoring order Expect Arrays to be equal ignoring order javascript javascript

Expect Arrays to be equal ignoring order


If it's just integers or other primitive values, you can sort() them before comparing.

expect(array1.sort()).toEqual(array2.sort());

If its objects, combine it with the map() function to extract an identifier that will be compared

array1 = [{id:1}, {id:2}, {id:3}];array2 = [{id:3}, {id:2}, {id:1}];expect(array1.map(a => a.id).sort()).toEqual(array2.map(a => a.id).sort());


You could use expect.arrayContaining(array) from standard jest:

  const expected = ['Alice', 'Bob'];  it('matches even if received contains additional elements', () => {    expect(['Alice', 'Bob', 'Eve']).toEqual(expect.arrayContaining(expected));  });


jasmine version 2.8 and later has

jasmine.arrayWithExactContents()

Which expects that an array contains exactly the elements listed, in any order.

array1 = [1,2,3];array2 = [3,2,1];expect(array1).toEqual(jasmine.arrayWithExactContents(array2))

See https://jasmine.github.io/api/3.4/jasmine.html