私は JavaScript ES6 に少し不慣れなので、以下の内容が期待どおりに機能しない理由を理解するのに苦労しています。
let check = [{name: 'trent'},{name: 'jason'}].includes({name: 'trent'});
// expect true - returns false
ありがとう!
ベストアンサー1
includes
基本的に、いずれかの要素===
が検索している要素であるかどうかを確認します。オブジェクトの場合、===
文字通り同じオブジェクト、つまり同じ参照 (メモリ内の同じ場所) にあるオブジェクトを意味し、同じ形状を意味するわけではありません。
var a1 = { name: 'a' }
var a2 = { name: 'a' }
console.log(a1 === a2) // false because they are not the same object in memory even if they have the same data
しかし、実際に配列内にあるオブジェクトを検索すると、次のように機能します。
var a1 = { name: 'a' }
var a2 = { name: 'a' }
var array = [a1, a2]
console.log(array.includes(a1)) // true because the object pointed to by a1 is included in this array