我有一个非常简单的问题: 如何通过数组中的值删除第一个元素。 例如:
arr = [ 1, 1, 2, 2, 3, 3, 4, 5 ]
#something like:
arr.delete_first(3)
#I would like a result like => [ 1, 1, 2, 2, 3, 4, 5]
我没有找到类似的东西,任何人都可以帮助我吗?
提前致谢
答案 0 :(得分:17)
将Array#find_index
的结果传递给Array#delete_at
:
>> arr.delete_at(arr.find_index(3))
>> arr
=> [1, 1, 2, 2, 3, 4, 5]
find_index()
将返回与其参数匹配的第一个元素的Array索引。 delete_at()
从指定索引处的Array中删除该元素。
如果未找到索引,为了防止delete_at()
引发TypeError
,您可以使用&&
构造将find_index()
的结果分配给变量并使用delete_at()
中的变量,如果它不是nil
。如果左侧是&&
或false
,nil
的右侧将完全无法执行。
>> (i = arr.find_index(3)) && arr.delete_at(i)
=> 3
>> (i = arr.find_index(6)) && arr.delete_at(i)
=> nil
>> arr
=> [1, 1, 2, 2, 3, 4, 5]
答案 1 :(得分:-7)
您还可以使用:-
运算符从数组中删除所需的元素,例如:
$> [1, 2, 3, '4', 'foo'] - ['foo']
$> [1, 2, 3, '4']
希望这有帮助。