2016-05-30 2 views
-1

Я работаю над скриптом списка контактов. Функция списка работает нормально.Список контактов Javascript

Предполагается, что функция должна принимать имя аргумента. Если аргумент соответствует любому из первых имен, счетов или стилей, он должен регистрировать контактную информацию друга на консоли и возвращать его.

Я попытался сделать это в своей функции поиска, но не возвращает ожидаемые значения (контактная информация - точнее, номер телефона). Я предполагаю, что это мой подход и непонимание конструктора объектов.

// Creating friends object 
var friends = new Object(); 

// Adding friends with name, phone number 
friends.bill = new Object(); 
// Giving data to Bill 
friends.bill.firstName = "Bill"; 
friends.bill.lastName = "Gates"; 
friends.bill.number = "623523"; 
friends.bill.address = ['One Microsoft Way','Redmond','WA','98052'] 

friends.steve = new Object(); 
// Givin data to Steve 
friends.steve.firstName = "Steve"; 
friends.steve.lastName = "Jobs"; 
friends.steve.number = "73472" 
friends.steve.address = ['1 Infinite Loop','Silicon Valley','CA','64326'] 

// Search function 
var search = function(name) { 
    for (var key in friends) { 
     if(name === friends.name.firstName) { 
      console.log(friends.name.number); 
      return friends.name.number; 
     } 
    };  
} 
+1

Вы заметили, что Стив имеет некоторую информацию Билла? (В разделе Steve: 'friends.bill.lastname =" Jobs "') –

+0

@BubbleHacker, хороший улов! Я этого не заметил. Как и ожидалось, программа работает некорректно. Функция поиска не составлена ​​правильно. –

ответ

0

Вы почти у цели. «Друг» является свойством объекта/словаря friends. for(var key in friends) выполняет идентификацию имени/ключа свойств объекта friends (и присваивает переменные key этим свойствам один за другим). Чтобы получить свойство/«friend» с friends с помощью его ключа, вы должны использовать friends[key] (где ключ - строка).

Пожалуйста, не разница между этими примерами:

var key = "james"; 
friends[key];  // Fetch the property with the key "james". 
friends.key;  // Fetch the property with the key "key". 
friends["james"]; // Fetch the property with the key "james". 
friends.james; // Fetch the property with the key "james". 

Вот решение для вас проблемы:

// Creating friends object 
 
var friends = new Object(); 
 

 
// Adding friends with name, phone number 
 
friends.bill = new Object(); 
 
// Giving data to Bill 
 
friends.bill.firstName = "Bill"; 
 
friends.bill.lastName = "Gates"; 
 
friends.bill.number = "623523"; 
 
friends.bill.address = ['One Microsoft Way','Redmond','WA','98052'] 
 

 
friends.steve = new Object(); 
 
// Givin data to Steve 
 
friends.steve.firstName = "Steve"; 
 
friends.steve.lastName = "Jobs"; // Typo here: bill -> steve. 
 
friends.steve.number = "73472"; // Same as above. 
 
friends.steve.address = ['1 Infinite Loop','Silicon Valley','CA','64326'] 
 

 

 
// Printing out entries in friend object 
 
var list = function(parameter){ 
 
for (var key in friends){ 
 
    console.log(key); 
 

 
} 
 
} 
 

 
// Search function 
 

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

 
search("Steve");

Смежные вопросы