сказать, что я ...Reposition элемент в массиве
arr = ["a", "b", "c"]
... и я хочу, чтобы переместить «а» между «б» и «в». я в настоящее время сделать
arr.delete("a")
arr.insert(2, "a")
Могу ли я сделать это в одной операции?
Благодаря
сказать, что я ...Reposition элемент в массиве
arr = ["a", "b", "c"]
... и я хочу, чтобы переместить «а» между «б» и «в». я в настоящее время сделать
arr.delete("a")
arr.insert(2, "a")
Могу ли я сделать это в одной операции?
Благодаря
Вам не нужно повторять "a"
. Поместите их в одном:
arr.insert(2, arr.delete("a"))
Спасибо! Это сделает работу. – dublxdad
Если вы хотите переместить «а» между «б» и «в», то вы должны сделать:
arr.insert(1, arr.delete_at(0))
※ Используйте .delete_at
вместо .delete
, потому что у вас может быть несколько 'a'
в вашем массиве.
Использование Array#shuffle!
arr = [ "a","b","c" ]
arr.shuffle! until arr[1] == 'a' && arr[0]=='b'
p arr #=> ["b", "a", "c"]
Вставьте после б, независимо от того, где они находятся в массиве:
arr.insert(arr.index("b"), arr.delete_at(arr.index("a")))
=> ["b", "a", "c"]
Вы также можете сделать:
arr[arr.index("a")], arr[arr.index("b")] = "b","a"
Вы можете использовать параллельно присвоение:
arr[0], arr[1] = arr[1], arr[0]
=> ["b", "a"]
arr
=> ["b", "a", "c"]
Он должен быть на месте? Зачем? – tokland