我有頂級的對象和左屬性的一個這樣的數組:有多少個對象具有相同的屬性值?
[{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