Мне нужно проверить, имеют ли два объекта общие под-объекты. От common Я имею в виду, что это точное значение, а не только равные значения.Проверьте, есть ли у двух объектов общие под-объекты
Что-то вроде:
function haveCommonObects(value1, value2) {
...
}
var common = {};
haveCommonObjects({a: common}, {b: {c: common}}) // true
haveCommonObjects({a: 1}, {b: 1}) // false
мне нужно проверить большие объекты, поэтому функция должна быть разумной эффективной. Также я не могу изменить объекты, поэтому я не могу пометить под-объекты со специальным свойством. Объекты создаются в сторонней библиотеке, поэтому я не могу изменить Object.prototype
.
Идеальное решение - получить идентификатор для каждого объекта и сохранить его в коллекции, которая поддерживает быстрый поиск.
Могу ли я сделать такую функцию в JS?
, так что вы хотите сравнить самый глубокий предмет/значение друг с другом? – depperm
Не только самый глубокий, мне нужно определить общие значения на любом уровне. –
Почему второй hasCommonObjects возвращает false? – depperm