gpt4 book ai didi

arrays - Ruby array.each 具有非唯一整数值

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:14 25 4
gpt4 key购买 nike

我们有 array = [4, 2, 9, 11, 2, 16]

那么我们有

indexes = []
for i in array do
if i > 0 then indexes << array.find_index(i) else next end
end

当打印出它返回的结果时[0, 1, 2, 3, 1, 5]

问题出在第四个索引上。它应该是 4,但它是 1,这是因为 array 的索引 1 和 4 具有相同的值(即 2)。

难道 for 循环(或 .each)不应该一个一个地遍历所有元素吗?为什么会这样?为什么它两次获取 array 的第二个索引?

最佳答案

array.find_index 返回 array 中与传递值匹配的元素的第一个索引。

如果你想要你正在寻找的值的索引,那么你应该使用 each_with_index 进行迭代:

indexes = []
array.each_with_index do |value, index|
indexes << index if value > 0
end

或者更紧凑(只分配一个数组):

indexes = array.each_with_object([]).with_index {|(v, o), i| o << v if i > 0 }

或者允许多次分配:

indexes = array.map.with_index {|v, i| v > 0 ? i : nil }.compact

或者:

indexes.map.with_index.select {|v| v.first > 0 }.map(&:last)

关于arrays - Ruby array.each 具有非唯一整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52791915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com