我有顶级的对象和左属性的一个这样的数组:有多少个对象具有相同的属性值?
[{top: 30, left: 20}, {top:50, left:10}, {..}]
我试图找到多少个对象具有近似的最大价值相同。在这种情况下:
[{top: 10, left: 20}, {top:10, left:10}, {top: 10, left: 123},
{top:500, left:10}, {top:2, left: 50}, {top:2, left:400}]
的方法将返回5
因为有有10
作为TOP值三个对象,并有2
作为TOP值两个对象。如果有一个对象不与其他任何东西共享其最高值,则不会将其考虑在内。我并不是在寻找确切的数值,而是在数值上有10%的差异,因此{top:10, left:20}
和{top:10.13, left:20}
将被视为具有相同的最高值。到目前为止,我有这个:
myarr.group_by { |x| x[:top] }.map { |k,v| [k, v.length] }.to_h
但这不会考虑到这个边际误差。我不确定我会如何改变它以便这样做。
比方说,你的保证金是'2'(绝对),你有什么打算用'[10做,11,12,13,14]'? '12 +/- 2'? '10 +/- 2'和'14 +/- 2'? '10'和'13 +/- 2'? –
'10.13'与'10'的10%差距如何? – sawa