hi, anyone know how to do this?
basically i’ve got an array of items
a = [‘a’,‘b’,‘c’,‘d’]
now given i can find the position of say ‘c’ using .index(‘c’), how do i
get the positions of the ones previous & next to it.
a recursive routine would probably do it, but looking for something more
flash
any ideas?
2009/5/14 John G. [email protected]
flash
any ideas?
Posted via http://www.ruby-forum.com/.
a[a.index(:c)-1] or a[a.index(:c)+1]?
Boby had it almost right!
instead of:
a[a.index(:c)+1]
it is:
a[a.index(‘c’)+1]
On Wed, May 13, 2009 at 11:48 PM, Boby Selamet Hartono
2009/5/14 John G. [email protected]:
flash
any ideas?
Depends on what you need to do. Do you need those indexes or do you
only need access to those elements?
There are a few variants, but the nice ones aren’t really safe against
edge cases (first and last element):
irb(main):004:0> a = [‘a’,‘b’,‘c’,‘d’]
=> [“a”, “b”, “c”, “d”]
irb(main):005:0> i = a.index(‘c’) and a[i-1 … i+1]
=> [“b”, “c”, “d”]
irb(main):006:0> a[a.index(‘c’) - 1, 3] rescue nil
=> [“b”, “c”, “d”]
irb(main):007:0> i = a.index(‘a’) and a[i-1 … i+1]
=> []
irb(main):008:0> a[a.index(‘a’) - 1, 3] rescue nil
=> [“d”]
The safest is probably
i = a.index(‘c’)
if i
predecessor = i > 0 ? a[i -1] : nil
successor = a[i + 1] # safe!
end
Or as a variant
i = a.index(‘c’) and begin
predecessor = i > 0 ? a[i -1] : nil
successor = a[i + 1] # safe!
end
Kind regards
robert
2009/5/14 Joshua C. [email protected]
a = [‘a’,‘b’,‘c’,‘d’]
Posted via http://www.ruby-forum.com/.
a[a.index(:c)-1] or a[a.index(:c)+1]?
–
Tidak ada yang lebih baik dari kembali ke asal
Nothing can be better than back to the roots
It was a copy from my irb. I’m use symbols as objects in my array. I’ve
never use index method but since I figure out that method returns an
Integer
I think it would be something like that (thanks to irb). I’m a newbie
and
just joining this ML yesterday :-).
Bobby, I am new too, so I might be missing something as well.
I tried your method first, and when I tried to do the symbol in irb it
gave
an error. Maybe you have settings I do not?
The safest is probably
i = a.index(‘c’)
if i
predecessor = i > 0 ? a[i -1] : nil
successor = a[i + 1] # safe!
end
Or as a variant
i = a.index(‘c’) and begin
predecessor = i > 0 ? a[i -1] : nil
successor = a[i + 1] # safe!
end
Kind regards
robert
thanks Robert, i was trying to build up a little function to find the
prev/next elements in an array, thanks to your help it’s sorted;
couldn’t find a solution online. appreciate it all.
John.