Underscore.js。为什么此代码不产生重复项?

Underscore.js. Why does this code not produce duplicates?

在 JS 中,我有一本字典。字典的关键字是 id 字典中的每一项都是以下形式:

{ name: aName, type: aType }

部分项目具有重复的 name 字段。我想提取具有重复 name 字段的项目。

这是我使用 underscore.js 的方法 工作:

通过将 id 键作为附加字段添加到数组中插入的项目,将字典转换为数组:

var acc = [],
    sorted,
    uniques,
    dupes;

    _.each(name_type_dictionary, function(name_type, id){
        acc.push({ name: name_type.name, type: name_type.type, id: id });
    });

排序 acc:

sorted = _.sortBy(acc, 'name');

检查 sorted 发现有重复项。让我们去拿他们。首先抓住所有独特的东西。我使用迭代器来指定唯一性标准。

    uniques = _.uniq(sorted, true, function(name_type_id) {
        return name_type_id.name;
    });

抓取重复项:

dupes = _.difference(sorted, uniques);

排序 dupe 以按字母顺序显示。

dupes_sorted = _.sortBy(dupes, 'name');

这似乎不起作用。我盯着 dupes_sorted 并且可以找到 none 的重复项。注意:一些名称字段中有逗号 and/or 括号。这会混淆 _.sort_.uniq 吗?

下面的代码将打印具有重复名称的元素

 a = [{ name: 'Damian', age: 1}, {name: 'Ania', age: 1}, {name: 'Damian', age: 2}, {name: 'Joanna', age: 4}] 

 grouped = _.groupBy(a, 'name')

 _.each(grouped, function(elements, name) { if(elements.length > 1) { console.log(elements) }; })