繁体   English   中英

从单独的JavaScript文件访问子属性时出现问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM