2015-12-18 77 views
1

我得到的是「目錄沒有定義」我真的不知道,如果這意味着我的代碼或我的JSON文件的錯誤。下面是我查了格式https://jsonformatter.curiousconcept.com/目錄節點JS

[ 
    { 
    "directory": "C:\\Users\\PCAdmin\\Downloads\\jsonin", 
    "dirID": "dir01" 
    }, 
    { 
    "directory": "C:\\Users\\PCAdmin\\Downloads\\jsonout", 
    "dirID": "dir02" 
    } 
    ] 

這裏JSON文件似乎我這基於我見過應該工作尚未例子代碼,我不能讓過去的錯誤;

'use strict'; 
    var fs = require('fs'); 
    var jsonObj = require("./jsonDirectories.json"); 
    for(directory in jsonObj) { 
     console.log("Dir: "+jsonObj.directory); 
    } 

我敢肯定,這是愚蠢的東西,但任何方向將不勝感激

+0

的可能的複製[循環通過在JavaScript數組(http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript) – dm03514

+0

嘗試此。 console.log(「Dir:」+ directory.directory); 。您可能想在這裏使用良好的命名約定。 – pratikpawar

回答

1

的錯誤意味着你的代碼的4行的變量directory未初始化。下面的代碼將修復這個bug:

'use strict'; 
var fs = require('fs'); 
var jsonObj = require("./jsonDirectories.json"); 
for (var dirInfo in jsonObj) { 
    console.log("Dir: " + dirInfo.directory); 
} 

然而,這仍然無法做你想做的,因爲in操作者不爲數組以這種方式工作。該in運營商一般是用來獲取對象的鍵(然後should still be used carefully)。

要遍歷您的目錄信息數組,你想要的是以下幾點:

'use strict'; 
var fs = require('fs'); 
var jsonObj = require('./jsonDirectories.json'); 
jsonObj.forEach(function(dirInfo) { 
    console.log('Dir: '+dirInfo.directory); 
} 

(我也除去混合單引號和雙引號,這是很好的做法。)

1

你需要使用它之前declaredirectory變量:

for (let item of jsonObj) { 
    // This line also needed fixing: 
    console.log("Dir: ", item.directory); 
} 
0

,當你在node.js中使用for(directory in jsonObj) ,目錄將被分配給每個項目的索引,而不是值。所以你可以使用jsonObj[directory]來獲取目錄。

但在我看來,這個選擇是更好:

jsonObj.forEach(function(directory) { 
    console.log("Dir: "+ directory); 
});