2015-11-19 18 views
3

Codecademy網站代碼「聯繫人列表」演習不會在Chrome

運行正常,我已經成功地完成了一個JavaScript鍛鍊Codecademy網站題爲「聯繫人列表」的代碼:

var friends = {}; 
friends.bill = { 
    firstName: "Bill", 
    lastName: "Gates", 
    number: "(206) 555-5555", 
    address: ['One Microsoft Way','Redmond','WA','98052'] 
}; 
friends.steve = { 
    firstName: "Steve", 
    lastName: "Jobs", 
    number: "(408) 555-5555", 
    address: ['1 Infinite Loop','Cupertino','CA','95014'] 
}; 

var list = function(obj) { 
    for(var prop in obj) { 
    console.log(prop); 
    } 
}; 

var search = function(name) { 
    for(var prop in friends) { 
    if(friends[prop].firstName === name) { 
     console.log(friends[prop]); 
     return friends[prop]; 
    } 
    } 
}; 

list(friends); 
search("Steve"); 

此輸出:

法案

史蒂夫

{姓: '史蒂夫',

名字: '作業',

號碼: '(408)555-5555',

地址:[ '1無限循環',「庫比蒂諾」, 'CA', '95014']}

{ 「名字」: 「史蒂夫」,

「姓氏」: 「喬布斯」,

「號」: 「(408)555-5555」,

「地址」:[ 「1>無限循環」, 「庫珀蒂諾」, 「CA」, 「95014」]}


我再變列表和搜索功能略,使其在鉻輸出正確:

var list = function(obj) { 
    for(var prop in obj) { 
    document.write(prop + "<br>"); 
    } 
}; 

var search = function(name) { 
    for(var prop in friends) { 
    if(friends[prop].firstName === name) { 
     document.write(friends[prop]); 
     return friends[prop]; 
    } 
    } 
}; 

這返回的輸出:

法案

史蒂夫

[目標對象]

問題

哪裏這個[object Object]輸出從何而來?

如何從搜索功能返回正確的輸出?

注意

列表功能工作正常,但與搜索功能的問題。 for循環中的friends[prop].firstName不返回任何內容。

在此先感謝您的幫助

回答

2

字符串[object Object]是一個Javascript對象的默認字符串表示。當你嘗試write時,你會得到任何物體。在你的榜樣,console.log確實有點魔力,爲你自動轉換:

document.write({}); 
 
document.write({ a: 'b' });

你可以做的輸出JS對象更有幫助的版本使用JSON。值得慶幸的是,JS提供了一個不錯的功能,用於將對象轉換成字符串:

document.write(JSON.stringify({})); 
 
document.write(JSON.stringify({ a: 'b' }));

+0

感謝您的JSON.stringify({});功能,非常有用,謝謝 –

0

document.write(friends[prop])顯示oupput爲[object Object],按屬性名稱訪問屬性。

var search = function (name) { 
     for (var prop in friends) { 
      if (friends[prop].firstName === name) { 
       //document.write(friends[prop]); 
       var oProp = friends[prop] 
       document.write(oProp.address + "<br/>" + oProp.firstName); 
       //return friends[prop] - as an object 
       //return oProp.address - as a single property 
       //return JSON.stringify(oProp) - as a JSON string 
       return friends[prop]; 
      } 
     } 
    }; 
相關問題