如何在具有多个对象的数组中循环并仅使用Javascript列出某些元素?

时间:2016-10-16 19:33:07

标签: javascript arrays for-loop javascript-objects

这是我写的代码。我希望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());

3 个答案:

答案 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语句并退出函数而不执行数组的其余元素。

您可以做以下事情:

&#13;
&#13;
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;
&#13;
&#13;