2017-08-24 11 views
0

ImageJのjavascriptコードを作成しようとしましたが、ディレクトリを選択して、ディレクトリとサブディレクトリにすべてのjpgとjpegファイルを返します。 私はこのコードを実行しています。それは直接的な子どもにとってはうまくいきますが、彼はサブディレクトリにgetJpegを呼びます(IJ.logで確認しています)。アイデア?再帰関数Javascript concat配列の結果 - ImageJ

importClass(Packages.ij.IJ); 
importClass(Packages.ij.plugin.frame.RoiManager); 
importClass(Packages.ij.gui.GenericDialog); 
importClass(Packages.ij.io.OpenDialog); 
importClass(Packages.java.io.File); 

var dirstr = IJ.getDirectory("Choose the stacks folder"); 
var jpeg = getJpeg(dirstr); 

for (var i = 0; i < jpeg.length; i++) { 
     IJ.log(jpeg[i]); 
} 

function getJpeg(dirst) { 
     var dir = new java.io.File(dirst); 
     var names = dir.listFiles(); 
     var jpeg = new Array(); 
     for (var i = 0 ; i < names.length; i++) { 
      if(names[i].isDirectory()){ 
       jpeg.concat(getJpeg(names[i].getPath())); 
       continue; 
      } 
      var namest = names[i].getName(); 
      if (namest.match(/.*\.jpg|jpeg/)) {  
        var path = names[i].getPath(); 
        jpeg.push(path); 
      } 
     } 
     return jpeg; 
} 

いただきありがとうございます:)

+0

配列の場合は、concat()ではなくpush()になると思います。メソッドを正しくチェックしてください –

+0

ありがとう、私はそれを試みますが、私は配列内の配列を持つと思います。 https://www.w3schools.com/jsreF/jsref_concat_array.asp EDIT; 私はあなたのドキュメントを投稿して私のエラーを見ました、concatは、私がする必要がある、関数の結果です jpeg = jpeg.concat(getJpeg(names [i] .getPath())); 私はとてもばかです – Zeldarck

+0

@Zeldarckそれはあなたの質問を解決したという意味ですか?もしそうなら、あなたの解答を答えとして掲示し、それを解決済みとしてマークしてください。あなたのコードでは、 'GenericDialog'と' OpenDialog'の代わりに[script parameters](https://imagej.net/Script_Parameters)を使うことをお勧めします。 ImageJの詳細については、[ImageJ forum](http://forum.imagej.net/)がお尋ねするのに最適な場所です。 –

答えて

0

を、連結ドキュメント(w3schools.com/jsreF/jsref_concat_array.asp)からmissreadから来る問題。置く必要があります。 jpeg = jpeg.concat(getJpeg(names [i] .getPath()));