Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按带下划线的属性值筛选重复的集合对象(以INSTIVE和trim开头)_Javascript_Underscore.js - Fatal编程技术网

Javascript 按带下划线的属性值筛选重复的集合对象(以INSTIVE和trim开头)

Javascript 按带下划线的属性值筛选重复的集合对象(以INSTIVE和trim开头),javascript,underscore.js,Javascript,Underscore.js,我正在寻找一种基于所选属性的值筛选/拒绝集合中对象的方法。具体来说,我需要过滤掉包含所选属性的重复值的对象。我需要将属性值转换为小写,并修剪空白 我已经有了删除重复项的方法,但我不知道如何包含小写转换和修剪 removeDuplicates: function (coll, attr) { var uniques = _.map(_.groupBy(coll, function (obj) { return obj[attr]; }), function

我正在寻找一种基于所选属性的值筛选/拒绝集合中对象的方法。具体来说,我需要过滤掉包含所选属性的重复值的对象。我需要将属性值转换为小写,并修剪空白

我已经有了删除重复项的方法,但我不知道如何包含小写转换和修剪

removeDuplicates: function (coll, attr) {
      var uniques = _.map(_.groupBy(coll, function (obj) {
        return obj[attr];
      }), function (grouped) {
        return grouped[0];
      });

      return uniques;
    }

如果集合是这样定义的,我们将不胜感激。

var array = [{
    name: "thefourtheye"
}, {
    name: "theFOURtheye"
}, {
    name: "thethirdeye"
}];
var attr = "name";
console.log(_.unique(array, false, function(currenObject) {
    return currenObject[attr].toLowerCase();
}));
# [ { name: 'thefourtheye' }, { name: 'thethirdeye' } ]
你应该像这样使用函数

var array = [{
    name: "thefourtheye"
}, {
    name: "theFOURtheye"
}, {
    name: "thethirdeye"
}];
var attr = "name";
console.log(_.unique(array, false, function(currenObject) {
    return currenObject[attr].toLowerCase();
}));
# [ { name: 'thefourtheye' }, { name: 'thethirdeye' } ]
根据签名

uniq_.uniq(array, [isSorted], [iterator])
第二个参数是告诉集合是否已排序。这一点很重要,因为如果对集合进行排序,则有一些算法可以非常有效地找到唯一的数据

第三个参数应该是一个函数,它可以转换数据以获得要比较的键值。正如我们在示例中看到的,我们实际上从各个对象中选择
name
属性,并将它们转换为小写字母。因此,这个小写名称将表示这个对象,如果两个小写名称相同,那么这些对象将被视为彼此的重复