【发布时间】:2017-05-26 00:31:19
【问题描述】:
我有一个名为 contentful.json 的文件,它存储在我的目录的根目录中。
这是该文件的样子:
[{
"URL": "/force",
"SpaceID": "2g1335I9GYQCKwmQYCuSSI"
}, {
"URL": "/heroku",
"SpaceID": "2g1335I9GYQCKwmQYCuSSI"
}, {
"URL": "/slack",
"SpaceID": "2g1335I9GYQCKwmQYCuSSI"
}, {
"URL": "/contentful",
"SpaceID": "2g1335I9GYQCKwmQYCuSSI"
}, {
"URL": "/openShift",
"SpaceID": "2g1335I9GYQCKwmQYCuSSI"
}]
然后我有一个名为 contentful.js 的文件。
看起来像这样:
const fs = require('fs');
let obj;
fs.readFile('./contentful.json', 'utf8', (err, jsonData) => {
if (err) throw err;
obj = JSON.parse(jsonData);
// Method One
for (let i = 0, l = obj.length; i < l; i++) {
console.log(obj.URL);
// ...
}
// Method Two
Object.keys(obj).forEach((key) => {
if (key.url === '/heroku') {
console.log(key.SpaceID);
}
});
});
我想做的是从contentful.js 文件中读取contentful.json 文件。哪个有效。
然后我试图遍历该文件并找到一个特定的值。
E.G 循环遍历 JSON 对象,如果 URL 等于动态值 (/force),则返回 SpaceID。
所以这个 JSON 对象可能 n 大。我尝试了两种解决方案,但认为我还不是他们的。
我需要在contnetful.js 文件中输入一个 URL,如果该 URL 与 contnetful.json 文件中的 URL 匹配,我希望它返回该 SpaceID。
【问题讨论】:
-
console.log(obj.URL)的输出是undefined。它打印出undefined的次数与 JSON 对象的大小一样多。在这种情况下 5. 但是对于方法二console.log(key.SpaceID);它不会打印任何内容。
标签: javascript arrays json node.js loops