Array.prototype.includes
эффективно сравнивает, используя оператор ===
. Таким образом, объекты сравниваются по ссылкам, примитивы - по значению.
Вот пример сравнения includes
результатов с ===
результатами:
const object = {'a': 'b'};
const copyOfObject = JSON.parse(JSON.stringify(object));
const array = [object, 'a', 1];
console.table([
{
'comparison': 'object vs object',
'result for Array.prototype.includes': array.includes(object),
'result for === operator': object === array[0]
},
{
'comparison': 'object vs copyOfObject',
'result for Array.prototype.includes': array.includes(copyOfObject),
'result for === operator': object === copyOfObject
},
{
'comparison': 'string "a" vs string "a"',
'result for Array.prototype.includes': array.includes('a'),
'result for === operator': 'a' === array[1]
},
{
'comparison': 'string "a" vs string "b"',
'result for Array.prototype.includes': array.includes('b'),
'result for === operator': 'b' === array[1]
},
{
'comparison': 'number 1 vs number 1',
'result for Array.prototype.includes': array.includes(1),
'result for === operator': 1 === array[2]
},
{
'comparison': 'number 1 vs number 2',
'result for Array.prototype.includes': array.includes(2),
'result for === operator': 2 === array[2]
},
])