2015-04-05 3 views
1

У меня есть несколько массивов, которые я помещал в один массив под названием alist[]. Я повторяю массив, чтобы распечатать все значения alist[]. Мне нужно найти значение в alist[2][i], а затем удалить alist[0][i], alist[1][i], alist[2][i], alist[3][i], alist[4][i] из моего массива alist[][]. (Я удалил код, который заполняет мои массивы, поэтому мне легче прочитать мой вопрос)Ruby удалить значения из многомерного массива

Это мое лучшее предположение ниже, но оно не работает. У кого-нибудь есть идеи?

#declare arrays 
nsymbol = [] 
sname = [] 
etf = [] 
testv = [] 
financials = [] 
alist = [] 

#create one array with all other arrays 
alist.push(nsymbol, sname, etf, testv, financials) 

(0...nsymbol.length).each do |i| 
    (0...alist.length).each do |j| 
    if (alist[2][i] || '').include? 'Y' 
     alist.delete_at(0) 
     alist.delete_at(1) 
     alist.delete_at(2) 
     alist.delete_at(3) 
     alist.delete_at(4) 
    end 
    #print whole array out 
    puts alist[j][i] 
    end 
end 

ответ

2

Выполнив alist.delete_at(0) удалить первый элемент alist так сказать alist[0][0..N] но вы хотите удалить alist[0][i] так что вам нужно удалить я й пункт alist[0].

alist[0].delete_at(i) 
alist[1].delete_at(i) 
# etc. 

Потому что вы печатаете ваш массив только после удаления нового содержания, не имеет значения, но если вы хотите использовать массив после этого вы должны разорвать цикл после удаления записей, поскольку удаление записей, приводят к другой записи, которая теперь является предметом alist[2][i] и в конечном итоге к дальнейшему удалению записей. (Хотя это также может быть именно то, что вы хотите).

+0

Да, это именно то, что я искал. Тогда я собираюсь сбрасывать 'alist []' в другой массив, который будет правильным размером – Daniel

Смежные вопросы