You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							910 B
						
					
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							910 B
						
					
					
				"use strict" | 
						|
 | 
						|
function unique_pred(list, compare) { | 
						|
  var ptr = 1 | 
						|
    , len = list.length | 
						|
    , a=list[0], b=list[0] | 
						|
  for(var i=1; i<len; ++i) { | 
						|
    b = a | 
						|
    a = list[i] | 
						|
    if(compare(a, b)) { | 
						|
      if(i === ptr) { | 
						|
        ptr++ | 
						|
        continue | 
						|
      } | 
						|
      list[ptr++] = a | 
						|
    } | 
						|
  } | 
						|
  list.length = ptr | 
						|
  return list | 
						|
} | 
						|
 | 
						|
function unique_eq(list) { | 
						|
  var ptr = 1 | 
						|
    , len = list.length | 
						|
    , a=list[0], b = list[0] | 
						|
  for(var i=1; i<len; ++i, b=a) { | 
						|
    b = a | 
						|
    a = list[i] | 
						|
    if(a !== b) { | 
						|
      if(i === ptr) { | 
						|
        ptr++ | 
						|
        continue | 
						|
      } | 
						|
      list[ptr++] = a | 
						|
    } | 
						|
  } | 
						|
  list.length = ptr | 
						|
  return list | 
						|
} | 
						|
 | 
						|
function unique(list, compare, sorted) { | 
						|
  if(list.length === 0) { | 
						|
    return list | 
						|
  } | 
						|
  if(compare) { | 
						|
    if(!sorted) { | 
						|
      list.sort(compare) | 
						|
    } | 
						|
    return unique_pred(list, compare) | 
						|
  } | 
						|
  if(!sorted) { | 
						|
    list.sort() | 
						|
  } | 
						|
  return unique_eq(list) | 
						|
} | 
						|
 | 
						|
module.exports = unique
 | 
						|
 |