2016-03-22 18 views
1

Aynı boyuttaki iki diziyi karşılaştırmanın bir yolu var mıdır? Dizilerin boyutu fazla 1.İki dizinin toplanması

Örneğin, dizinler (i, j, k, ...) ile dizi arra unsurları indeksleri (i, j, k, ...) için olan dizi arrB elemanlarına eşit sadece gerçek değerini alan bir fonksiyon olabilir olabilir önemlidir tüm indeksler; ve diğer durumlar için değeri False. "For Each...In arrA" veya en az iç içe "For i=LBound(arrA,1) to UBound(arrA,1)...Next" kullanmak için günaha olduğunu biliyorum, ancak bu çözüm çok boyutlu diziler için zarif ve etkili görünmüyor. Şimdiden çok teşekkürler. Bu bağlantısından

+1

Zarif görünmeyebilir, ancak çok boyutlu diziler karşılaştıran iç içe döngüler aşağı gelir her boyut, bakmak gerekecektir. – trincot

cevap

0

: Compare two arrays and return matches

firstArr = Array("John", "Jacob", "Sam", "Bill") 
secondArr = Array("Jen", "Bill", "Mike", "Steve", "John") 
dim matchArr() 
for i=0 to ubound(firstArr) 
    for j=0 to ubound(secondArr) 
     if strComp(firstArr(i), secondArr(j), 1)=0 then 
      on error resume next 
      redim preserve matchArr(ubound(matchArr)+1) 
      if err.number<>0 then redim matchArr(0) : err.clear 
      on error goto 0 
      matchArr(ubound(matchArr))=firstArr(i) 
     end if 
    next 
next 
on error resume next 
wscript.echo "The number of matches is " & ubound(matchArr)+1 
if err.number<>0 then wscript.echo "No match is reported." : err.clear 
on error goto 0 
'etc etc other stuff 
+0

Merhaba Hackoo. Cevabınız için teşekkür ederim ama bu tam olarak aradığım şey değil. Senaryonuzda, dinamik 'matchArr ', hem tek boyutlu dizilerde (' firstArr' ve 'secondArr') bulunan elemanlarla doldurulur; ve sonra 'ubound (matchArr) -lbound (matchArr) + 1' dizisindeki elemanların sayısını verir. Hiç şüphesiz, bu yöntem eşleşen elemanların sayısını bulmak için iyidir. Ama ihtiyacım olan tek şey, 'firstArr'' secondArr' tam kopyasıysa evet/hayır cevabı. Bu yaklaşımda {{1,2}, {3,4}} 'dizisinin {{1,2}, {4,3}}' ile aynı olmadığını (aynı elemanların her iki matris oluştur. –

+0

Ah ... bir şey daha. İç içe döngüler, çözümde sahip olmak istediğim şey değil. Hala dizilerin eşitliğini tespit etmenin çok daha etkili bir yolu olduğunu umuyorum. –

+0

Ayrıca, genel olarak "firstArr" ve "secondArr" boyutlarının bilinmediği durumda. Komut dosyasında iki dizi "ReDim" ifadesiyle boyutu değiştirebilir. –

İlgili konular