我有一个这样的对象:

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(', '));
    }
}

07-24 09:38
查看更多