2013-10-11 64 views
1

我有一個獲取目錄內容的遞歸方法,但我想忽略某個對象(例如,如果它是.DS_store或其他東西),但我怎麼能讓它忽略它並繼續沒有返回值。忽略地圖對象Nodejs

像這樣的事情,但顯然繼續不工作...

... 
    info.children = fs.readdirSync(filename).map(function(child) { 

     if (child.indexOf('.') == 0) 
      continue; 

     return dirTree(filename + '/' + child); 
    }); 
... 

感謝。

回答

0

Map本身執行1:1映射,輸出數組將包含相同數量的元素作爲輸入陣列。

但是你可以鏈filtermap方法:

info.children = fs.readdirSync(filename).filter(isValidFile).map(doStuff); 

// Used to filter out unwanted entries (files) 
function isValidFile (child) { 
    return (child !== '.DS_store' && child.indexOf('.') !== 0); 
} 

// Used to perform your actual logic 
function doStuff (child) { 
    return dirTree(filename + '/' + child); 
} 
+0

完美!非常感謝。 –

0

使用filter首先得到正確的數組元素,然後map

是這樣的:

... 
info.children = fs.readdirSync(filename).filter(function (child) { 
    return child.indexOf('.') !== 0; 
}).map(function (child) { 
    return dirTree(filename + '/' + child); 
}); 
...