Откройте URL и активируйте Google Chrome с помощью Applescript

Объект ES6 Set не имеет методов сравнения или настраиваемой расширяемости.

Методы .has(), .add() и .delete() работают только с того, что они являются одним и тем же фактическим объектом или одинаковым значением для примитива и не имеют возможности подключать или заменять только эту логику .

Вы могли бы предположительно получить свой собственный объект из Set и заменить методы .has(), .add() и .delete() тем, что сначала провело глубокое сравнение объектов, чтобы найти, если элемент уже в наборе, но производительность, вероятно, не будет хорошей, поскольку основной объект Set не будет вообще помогать. Вам, вероятно, придется просто выполнить итерацию грубой силы по всем существующим объектам, чтобы найти совпадение, используя собственный пользовательский сопоставление, прежде чем вызывать оригинал .add().

Вот некоторая информация из этой статьи и обсуждение функций ES6:

5.2 Почему я не могу настроить, как карты и наборы сравнивают ключи и значения?

Вопрос: Было бы хорошо, если бы были способом настроить, какие ключи карты и какие установленные элементы считаются равными. Почему нет?

Ответ: эта функция отложена, так как ее трудно реализовать правильно и эффективно. Один из вариантов - передать обратные вызовы коллекциям, которые задают равенство.

Другим вариантом, доступным в Java, является указание равенства посредством метода, реализующего объект (equals () в Java). Однако этот подход является проблематичным для изменяемых объектов: в общем случае, если объект изменяется, его «местоположение» внутри коллекции также должно измениться. Но это не то, что происходит на Java. Вероятно, JavaScript будет более безопасным путем только для сравнения по значению для специальных неизменяемых объектов (так называемых объектов ценности). Сравнение по значению означает, что два значения считаются равными, если их содержимое равно. Примитивные значения сравниваются по значению в JavaScript.

blockquote>

19
задан ATLChris 28 February 2014 в 22:57
поделиться