3.11 uniq

3.11.1语法

_.uniq(array, [isSorted], [iteratee])

3.11.2说明

返回 array去重后的副本, 使用 === 做相等测试. 如果您确定 array 已经排序, 那么给 isSorted 参数传递 true值, 此函数将运行的更快的算法. 如果要处理对象元素, 传递 iteratee函数来获取要对比的属性.

3.11.3示例

示例一:只传array一个参数

var arr =[1, 3, 5, 2, 4, 6, 7, 8, 9, 10,1,3,5,9,11];
var res=_.uniq(arr);
console.log(res);
// =>
// [1, 3, 5, 2, 4, 6, 7, 8, 9, 10, 11]
console.log(arr);
//=>
// [1, 3, 5, 2, 4, 6, 7, 8, 9, 10, 1, 3, 5, 9, 11]原数组不变。

示例二:array排序

var arr=[1,2,3,5,4,11,7,9,8,9,7]
var res=_.uniq(arr.sort(function(a,b){return a-b}));
console.log(res);
// =>
// [1, 2, 3, 4, 5, 7, 8, 9, 11]

sort()说明:

sort() 方法用于对数组的元素进行排序。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  1. 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  2. 若 a 等于 b,则返回 0。
  3. 若 a 大于 b,则返回一个大于 0 的值。