[英]Problems in accessing sub properties from separate JavaScript file
我试图从javascript文件访问子属性,这给了我一些奇怪的东西!
假设这是我的名为data.js的 JS文件
module.exports = {
something: {
name: "Something",
num: 1,
email: "something@gmail.com"
},
somethingtwo: {
name: "Something Something",
num: 2,
email: "somethingtwo@gmail.com"
},
};
在我需要访问它的主要js文件app.js中,它看起来像
var persons = require('./data.js');
var getAName = function() {
for(var name in persons) {
console.log(name.email);
}
}
我真的不知道出什么问题了,但是我已经尝试了很长时间了。 预期的输出是data.js文件中的电子邮件ID,但是相反,我得到的条目数是未定义的(如果data.js中有2个条目,那么我得到2个未定义,依此类推)。
如何在没有这些未定义的情况下从data.js访问电子邮件或数字?
谢谢在高级PS:console.log(name)返回的东西
好吧, name.email
是未定义的,因为name
是一个字符串。
你可以通过写来测试
console.log(typeof name);
现在,要解决您的问题,您需要正确访问属性:
var getAName = function() {
for (var name in persons) {
console.log(persons[name].email)
}
}
返回值:
something@gmail.com
somethingtwo@gmail.com
for(var name in persons) {
//persons is actually an object not array
//you are actually iterating through keys of an object
//var name represent a key in that object
console.log(persons[name]); //value corresponding to the key
}
我想这段代码会给你想要的结果。
您应该使用
console.log(persons[name].email)
要求不要自动调用模块
var DataArchive = require('./data.js');
var module = DataArchive.module;
var persons = module.exports;
var getAName = function() {
for(var person in persons) {
//person should be something (first iteration) and somethingtwo (second iteration)
console.log(person.email);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.