这是我写的代码。我希望listContacts
函数循环遍历contacts
数组,并将每个联系人的名字和姓氏记录到控制台。当我运行它时,它只会将John Doe记录到控制台。我在这里缺少什么?
var contacts = [
{
firstName : 'John',
lastName : 'Doe',
phone : '(512) 355-0453',
email : 'johndoe@email.com'
},
{
firstName : 'Jane',
lastName : 'Doe',
phone : '(313) 641-2203',
email : 'janedoe@email.com'
},
{
firstName : 'Suzie',
lastName : 'Smith',
phone : '(415) 604-4219',
email : 'suziesmith@email.com'
}
];
var listContacts = function () {
for (var i = 0; i <= contacts.length; i++) {
return contacts[i].firstName + ' ' + contacts[i].lastName;
}
};
console.log(listContacts());
答案 0 :(得分:3)
run
循环中的return
语句导致该循环在第一次迭代后停止。相反,您应该在循环中登录:
for
答案 1 :(得分:2)
循环结构中的return
将使您的函数立即退出,因此您的循环将永远不会迭代多次。因此,您只能看到第一个条目。而是收集数组中的名称,并返回:
var listContacts = function () {
var result = [];
for (var i = 0; i < contacts.length; i++) {
result.push(contacts[i].firstName + ' ' + contacts[i].lastName);
}
return result;
}
// Turn the array to string by joining with a newline character:
console.log(listContacts().join('\n'));
更简洁的方法是使用此ES6代码:
var listContacts = function () {
return contacts.map(c => c.firstName + ' ' + c.lastName);
}
// Turn the array to string by joining with a newline character:
console.log(listContacts().join('\n'));
答案 2 :(得分:1)
你正在for循环中返回,当for循环执行时,它会看到一个return语句并退出函数而不执行数组的其余元素。
您可以做以下事情:
var contacts = [{
firstName: 'John',
lastName: 'Doe',
phone: '(512) 355-0453',
email: 'johndoe@email.com'
}, {
firstName: 'Jane',
lastName: 'Doe',
phone: '(313) 641-2203',
email: 'janedoe@email.com'
}, {
firstName: 'Suzie',
lastName: 'Smith',
phone: '(415) 604-4219',
email: 'suziesmith@email.com'
}];
var listContacts = function() {
return contacts.map(function(contact) {
return contact.firstName + " " + contact.lastName
})
};
console.log(listContacts());
&#13;