Вы можете «инвертировать» ваш объект (свойства становятся значениями, значения становятся свойствами):
var byValue = {};
for (var prop in object) {
if (!(object[prop] in byValue)) {
byValue[object[prop]] = [];
}
byValue[object[prop]].push(prop);
}
Это должно привести к этой структуре:
{
'text1': ['key1', 'key3'],
'text2': ['key2'],
'text3': ['key4']
}
Затем вы можете обнаружить те значения, которые имели повторяющиеся ключи:
for (var value in byValue) {
if (byValue[value].length > 1) {
alert(byValue[value].join(', '));
}
}