Нет необходимости использовать .toString()
на ваших объектах. В данный момент вы перебираете массив, используя do-while l oop. Это может быть изменено на while
l oop, так как вы знаете, что вам нужно будет выполнить итерацию по крайней мере до конца вашего массива, однако вы можете прекратить зацикливание раньше, если найдете свой объект. Используя while
l oop, вы можете l oop по каждому объекту в вашем массиве, чтобы определить, имеет ли объект свойство .name
, равное имени поиска. Вы можете остановить l oop, как только ваш объект будет найден:
// Don't change this
let name = 'Mustafa';
let phonebook = [
{ name : 'Anne', number : '9065' },
{ name : 'Mustafa', number : '6888' },
{ name : 'Tina', number : '4312' },
];
let found = false;
let i = 0;
while(i < phonebook.length && !found) {
const currentPerson = phonebook[i]; // get current object from phonebook
if(currentPerson.name === name) { // use dot notation on the object, get it's name, and see if it equals the search name
console.log(name +": " +currentPerson.number);
found = true; // stop the loop
}
i++;
}
// by this point we have looped through the entire array
if(!found) { // if found is still false, then the contact hasn't been found
console.log("Contact not found.");
}
Вышесказанное также можно выполнить с помощью функций высшего порядка, таких как .find()
в массиве phonebook
, который позаботится об этом logi c для вас:
// Don't change this
let name = 'Mustafa';
let phonebook = [
{ name : 'Anne', number : '9065' },
{ name : 'Mustafa', number : '6888' },
{ name : 'Tina', number : '4312' },
];
const person = phonebook.find(o => o.name === name);
if(person) {
console.log(person.name +": " +person.number);
} else {
console.log("Contact not found.");
}
Метод find принимает функцию, эта функция вызывается для каждого элемента в вашем массиве. Если он возвращает true для данного элемента в вашем массиве, метод .find()
вернет этот элемент.