我有一个ActiveRecord对象数组,其中Object.word是一个字符串。
我知道
<complexType name="ShipOrderType">
<sequence>
<element name="orderperson" type="string"></element>
<element name="shipto" type="tns:shiptoType"></element>
</sequence>
<attribute name="orderid" type="int" use="required"></attribute>
</complexType>
<complexType name="shiptoType">
<sequence>
<element name="name" maxOccurs="1" minOccurs="1" type="string">
</element>
<element name="city" type="City">
</element>
</sequence>
<attribute name="orderid" type="string"></attribute>
</complexType>
<simpleType name="City">
<restriction base="string">
<enumeration value="Bangalore"></enumeration>
<enumeration value="Mysore"></enumeration>
</restriction>
</simpleType>
将返回具有唯一:字值的对象。
我还想制作一个额外的条件(如果可能的话,使用uniq),这样就不会有任何单词远离另一个单词:具体来说,我不想返回带有“知道”和“知道”字样的对象,或“称重”和“称重”,但只选择其中一种。
有没有一种简洁直观的方法来实现这一目标?
答案 0 :(得分:2)
您可以使用拒绝拒绝某些元素,具体取决于某些条件,例如:
[1,2,3].reject {|a| a > 1} # [1]
答案 1 :(得分:1)
您可以在Rails中使用singularize
来获取该单词的奇异值,并仍使用您的uniq
代码:
array.uniq{|s| s.word.singularize}
[2] pry(main)> ["test", "tests", "word", "words", "entity", "entities"].uniq{|s| s.singularize}
=> ["test", "word", "entity"]