2015-04-05 139 views
1

我有一些数组放在一个名为alist[]的数组中。我遍历数组以打印出alist[]的所有值。我需要在alist[2][i]处找到一个值,然后从我的阵列alist[][]中删除alist[0][i],,alist[2][i],alist[3][i],alist[4][i]。 (我删除了填充我的阵列的代码,以便更容易阅读我的问题)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 2015-04-05 16:27:40