Ruby从多维数组中删除值

时间:2015-04-05 15:46:12

标签: ruby arrays multidimensional-array

我将一些数组放入一个名为alist[]的数组中。我正在迭代数组以打印出alist[]的所有值。我需要在alist[2][i]找到一个值,然后从我的数组{{alist[0][i]中移除alist[1][i]alist[2][i]alist[3][i]alist[4][i]alist[][] 1}}。 (我删除了填充我的数组的代码,以便更容易阅读我的问题)

这是我最好的猜测,但它不起作用。有人会有任何想法吗?

#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

1 个答案:

答案 0 :(得分:2)

通过执行alist.delete_at(0),您删除了alist的第一项,可以说alist[0][0..N],但您要删除alist[0][i],因此您需要删除i alist[0]

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

因为您在删除新内容后正在打印数组并不重要,但如果您想在此之后使用数组,则应在删除条目后中断循环,因为删除条目会导致另一个条目现在是项目alist[2][i],并最终进一步删除条目。 (虽然这也可能正是你想要的)。