2017-08-24 68 views
0

我嘗試爲ImageJ創建一個javascript代碼,它必須允許我選擇一個目錄,並將所有jpg和jpeg文件返回給目錄和子目錄。 我已經做了這段代碼,它對直接孩子來說很好,他在子目錄(我用一些IJ.log驗證了它)上調用了getJpeg,但是jpeg數組不是連續的,一個主意?遞歸函數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

對於數組我認爲這將是push()不concat()。檢查方法正確 –

+0

謝謝,我會嘗試,但我想我會在陣列中有一個數組。 https://www.w3schools.com/jsreF/jsref_concat_array.asp 編輯; jpeg = jpeg.concat(getJpeg(names [i] .getPath()));我看到我的錯誤與帖子你的文檔,concat是函數的結果,我必須做的, jpeg = jpeg.concat 我真是太白癡 – Zeldarck

+0

@Zeldarck這是否意味着你解決了你的問題?如果是這樣,請將您的解決方案作爲答案發布,並將其標記爲已解決。對於你的代碼,我建議使用[腳本參數](https://imagej.net/Script_Parameters)而不是'GenericDialog'和'OpenDialog'。有關ImageJ的更多問題,[ImageJ forum](http://forum.imagej.net/)是最好的地方。 –

回答

0

來自從CONCAT文檔(w3schools.com/jsreF/jsref_concat_array.asp)一missread的問題。必須把 jpeg = jpeg.concat(getJpeg(names [i] .getPath()));