提取多个对象值

时间:2011-09-30 07:01:48

标签: javascript arrays unique

我有一个这样的对象:

object["key1"] = "text1"
object["key2"] = "text2"
object["key3"] = "text1"
object["key4"] = "text3"

如何给出具有相同值的元素(例如警告)(text1,text2等)?

在上面的例子中,它应该是object["key1"]object["key2"]

谢谢

3 个答案:

答案 0 :(得分:4)

您可以“反转”您的对象(属性变为值,值变为属性):

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

答案 1 :(得分:0)

我更新了我的脚本

http://jsfiddle.net/HerrSerker/LAnRt/

这不会检查复杂值中的标识,只是为了相等(参见foo示例)

答案 2 :(得分:0)

我已对数组进行了排序,然后认为您需要提醒或执行任何操作 功能,每个重复元素只有一次。 警告:排序可能会因阵列的大小而变重 http://jsfiddle.net/SPQJ7/ 上面的小提琴已经设置并使用多个重新元素