Объект JavaScript Set, представленный в ES6, использует алгоритм равенства, аналогичный оператору ===. Однако этот подход не подходит для сравнения сложных объектов.
Для достижения глубокого сравнения объектов Set в настоящее время не существует простого решения, доступного в JavaScript. Внутренние механизмы добавления, удаления и проверки существования Set основаны исключительно на ссылках на объекты или сравнении примитивных значений.
Следовательно, любая попытка настроить равенство объектов потребует переопределения основных методов Set, таких как .has (), .add() и .delete(). Это приведет к увеличению накладных расходов и снижению производительности из-за необходимости итеративных сравнений по всему набору для каждой операции.
Появились предложения по устранению этого ограничения путем введения в JavaScript специализированных структур данных, таких как записи и кортежи. Эти конструкции разработаны так, чтобы быть неизменяемыми и сопоставимыми по значению, а не по ссылке на объект. В случае реализации Maps и Sets могли бы использовать эти структуры для достижения глубокого сравнения объектов.
Хотя такие предложения могут предложить многообещающее решение в будущем, в настоящее время они не являются частью стандартной спецификации JavaScript. В результате возможность настройки равенства объектов для объектов Set остается проблемой в JavaScript.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3