search () используя цикл for. - PullRequest
       12

search () используя цикл for.

0 голосов
/ 11 февраля 2012

Это часть проекта codeacademy. Часть от начала до списка (); функция более или менее работает. Моя задача - сделать функцию поиска с помощью цикла for. Заранее спасибо.

var bob = {
    firstName: "Bob",
    lastName: "Jones",

    phoneNumber: "(650) 777 - 7777",
    email: "bob.jones@example.com"
};

var mary = {
    firstName: "Mary",
    lastName: "Johnson",

    phoneNumber: "(650) 888 - 8888",
    email: "mary.johnson@example.com"
};

var contacts = [bob, mary];

function printPerson (person) {
    console.log(person.firstName + " " + person.lastName);
}

var list =  function(){
    var contactsNumber = contacts.length;
    for(i=0; i<=contactsNumber; i++){
        printPerson(contacts[i]);
    }
};

list();

var search = function(lastName){
    var number = contacts.length;
    for(i=0; i<= number; i++){
        if(lastName === contacts[i].lastName){
            printPerson(contacts[i]);
        }
    }
};

search("Jones");

Ответы [ 4 ]

2 голосов
/ 11 февраля 2012

Если у вас есть 2 элемента в массиве, вы хотите, чтобы индексы 0 и 1 были зациклены, а не 2.Итак, используйте < вместо <=:

for(var i = 0; i < number; i++)
2 голосов
/ 11 февраля 2012

Это упражнение содержит ошибки (или не было известно, исправили ли они). Вам нужно запустить все остальные функции, чтобы получить правильное значение:

var bob = {
    firstName: "Bob",
    lastName: "Jones",

    phoneNumber: "(650) 777 - 7777",
    email: "bob.jones@example.com"
};

var mary = {
    firstName: "Mary",
    lastName: "Johnson",

    phoneNumber: "(650) 888 - 8888",
    email: "mary.johnson@example.com"
};

var contacts = [bob, mary];

function printPerson (person) {
    console.log(person.firstName + " " + person.lastName);
}

var list = function ()
{
    var contactsNum = contacts.length;
    for (i=0; i < contactsNum; i++)
    printPerson(contacts[i]);
};

function search(lastName){
     var items = contacts.length;
     for(i = 0; i < items; i++){
         if(contacts[i].lastName == lastName)
              printPerson(contacts[i]);      
     }
}
list();
search("Jones");
0 голосов
/ 11 февраля 2012
var personList = [
    { 'FirstName' : "John", 'LastName': "Doe"},
    { 'FirstName' : "Jane", 'LastName': "Deen"}
]


function PersonSearchService() {  
  this.Print = function(person) {
     console.log(person.FirstName + " " + person.LastName);
  }  
  this.Search = function(lastName) {
      for(var p in personList) {         
         if(personList[p].LastName === lastName) {             
             this.Print (personList[p]);
         }
      }
  }
}

var p = new PersonSearchService();
p.Search ("Doe");

Вы можете попробовать этот способ

0 голосов
/ 11 февраля 2012

Поскольку вы использовали ключевые слова var, у вас нет доступа к контактам в функции. Удалите ключевое слово var перед контактами, и оно должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...