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