пользовательское равенство объектов для гармоничного набора (es6)
У меня есть проблема, когда я генерирую много значений, и мне нужно убедиться, что я работаю только с уникальными. Поскольку я использую узел js с флагом --harmony и имею доступ к коллекциям гармонии, я решил, что опция может быть опцией.
Я ищу что-то похожее на следующий пример:
'use strict';
function Piece(x,y){
this.x = x
this.y = y
}
function Board(width,height,pieces){
this.width = width
this.height = height
this.pieces = pieces
}
function generatePieces(){
return [
new Piece(0,0),
new Piece(1,1)
]
}
//boardA and boardB are two different but equivalent boards
var boardA = new Board(10,10,generatePieces())
var boardB = new Board(10,10,generatePieces())
var boards = new Set()
boards.add(boardA)
boards.has(boardB) //return true
Теперь, чтобы достичь этого на другом языке, скажем, c #, я ожидал бы реализовать функцию equals, а также функцию генерации хеш-кода для Board и Piece. Поскольку я ожидаю, что равенство объектов по умолчанию будет основано на ссылках. Или, возможно, использовать специальный тип неизменяемого значения (скажем, case-класс в scala)
Есть ли способ определить равенство для моих объектов, чтобы решить мою проблему?