的组等同的元件是否有一个的JavaScript或的CoffeeScript函数(或也许的延伸突出GROUPBY功能),其接收作为参数的阵列和等价比较和组阵列元件基于此等价比较器(有两个参数,而不仅仅是一个参数布尔函数)?功能到一个数组
由于我想要的一个例子:
areEquivalent = (p1, p2) ->
p1.birthYear == p2.birthYear and
p1.birthPlace == p2.birthPlace and
p1.gender == p2.gender
p1 = {name:'Anna', birthYear: 1990, birthPlace: 'Alaska', gender: 'female', hasCar: true, hasChildren: false}
p2 = {name:'John', birthYear: 1990, birthPlace: 'Alaska', gender: 'male', hasCar: true, hasChildren: false}
p3 = {name:'Dora', birthYear: 1980, birthPlace: 'Hawaii', gender: 'female', hasCar: true, hasChildren: true}
p4 = {name:'Lumi', birthYear: 1980, birthPlace: 'Hawaii', gender: 'female', hasCar: false, hasChildren: false}
p5 = {name:'Jack', birthYear: 1990, birthPlace: 'Alaska', gender: 'male', hasCar: false, hasChildren: false}
console.log areEquivalent p1, p2
# false
console.log areEquivalent p3, p4
# true
people = [p1, p2, p3, p4, p5]
console.log _.groupEquivalentObjects(people, areEquivalent)
# [ [p1], [p2,p5], [p3,p4] ]
你能等价功能扩展到比较功能,并使用排序? (不要紧,什么样的顺序比较函数产生的,只要它是自洽的。) – user2357112
另外,你知道这会在时间中的二次等价类的数量运行,对不对?如果你能以某种方式为每个等价类生成一个身份代码并使用'groupBy',它会快得多。 – user2357112
请不要在标题中添加标签,这是标签的用途。 – elclanrs