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) }; })
在 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) }; })