9

如何通过数组中的值删除第一个元素?

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]

提前致谢

4

2 回答 2

21

将结果传递Array#find_indexArray#delete_at

>> arr.delete_at(arr.find_index(3))

>> arr
=> [1, 1, 2, 2, 3, 4, 5]

find_index()将返回与其参数匹配的第一个元素的数组索引。delete_at()从指定索引处的 Array 中删除元素。

为防止在未找到索引时delete_at()引发 a TypeError,您可以使用&&构造将结果分配给find_index()变量,并在未找到时使用该delete_at()变量nil&&如果左侧是falseor ,则右侧根本不会执行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]
于 2013-07-27T23:10:27.970 回答
-8

您还可以使用:-运算符从数组中删除所需的元素,例如:

$> [1, 2, 3, '4', 'foo'] - ['foo']
$> [1, 2, 3, '4']

希望这可以帮助。

于 2014-09-03T11:48:55.020 回答