我有一个这样的对象:
object["key1"] = "text1"
object["key2"] = "text2"
object["key3"] = "text1"
object["key4"] = "text3"
如何给出具有相同值(文本1,文本2等)的元素(例如发出警报)?
在上面的示例中,它应该是
object["key1"]
和object["key2"]
。谢谢
最佳答案
您可以“反转”对象(属性变为值,值变为属性):
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(', '));
}
}