如何迭代对象内的数组?
我有一个config.json文件:
{ "test": { "maths": [ "core", "core2" ] } }
在我的index.js中,我想访问对象'test',并遍历每个math元素。
我是新来的arrays,所以仍然试图找出他们如何工作。 这种方法有什么问题? (我知道这是行不通的)
var CONFIG = require('./config.json') var fn = CONFIG.test.maths fn.forEach(function(value){ console.log(value); });
另外,这样做的正确方法是什么?
尝试改变config.js
module.exports = { "test": { "maths": [ "core", "core2" ] } };
就目前而言 – 您的模块不会导出任何内容。
更新:如果你喜欢.json – 这个方法不会工作,因为.json不能被导出(但是可以在node中被需要,请参阅如何使用Node.jsparsingJSON? ),它可以用.js文件作为模块。 而且你也必须改变这个部分:
require('./config.js')
Update2:它像index.js一样工作
var CONFIG = require('./config') var fn = CONFIG.test.maths fn.forEach(function(value){ console.log(value); });
config.json
{ "test": { "maths": [ "core", "core2" ] } }
在我的节点v5.3.0
要解决这个问题,请将config.js文件重命名为config.json(对于命名约定)
更改:
var CONFIG = require('./config')
至:
var CONFIG = require('./config.json')
原因是需要一个文件需要确切的文件名,包括扩展名
3可能的解决scheme,select一个最适合你的:
- 将
config.js
的文件扩展名更改为config.json
-
读取文件,并将其parsing为JSON:
var CONFIG = JSON.parse(require('fs').readFile('./config.js'));
-
按照Anton的build议,将该文件设置为导出JSON而不是普通JSON的模块
您可以简单地使用JQuery方法getJSON将Json加载到Javascript中 。
`$.getJSON( "config.json", function( data ) { console.log(data); var val = data.test.maths val.forEach(function (d) { console.log(d); }) });`