【问题标题】:looping through user data in an object array遍历对象数组中的用户数据
【发布时间】:2021-02-13 16:43:13
【问题描述】:

我正在尝试遍历多个用户的数据。如下图:

const users = [
  {
    name: 'Homer', 
    role: 'Clerk', 
    dob: '12/02/1988',
    admin: false 
  }, 
  {
    name: 'Lisa', 
    role: 'Staff', 
    dob: '01/30/1965',
    admin: false 
  }, 
  {
    name: 'Marge', 
    role: 'Associate', 
    dob: '09/10/1980',
    admin: true 
  }
];

我的代码如下:

let namesAndRoles = (users) => {
  for (let [key,value] of Object.entries(users)) {
    console.log(`${key}: ${value}`);
  }
};
//namesAndRoles(users)

给定一个用户数组,编写一个函数 namesAndRoles,它以字符串形式返回所有用户的姓名和角色,每个值都标记为:

我如何以这种形式取回用户数据:

Name: Homer
Role: Clerk

【问题讨论】:

  • users 是一个数组,那么为什么是 Object.entries()(以及为什么是 for (let [key,value] of ...))?
  • 我正在尝试循环并仅抓取两个数据条目,但我的代码无法正常工作。我认为我需要执行嵌套循环来提取数据?

标签: javascript arrays object javascript-objects


【解决方案1】:

value 是您尝试记录的对象,您应该访问特定的属性值,例如 value.name

你可以试试Array.prototype.map():

map() 方法创建一个新数组,其中填充了对调用数组中的每个元素调用提供的函数的结果。

const users = [
  {
    name: 'Homer', 
    role: 'Clerk', 
    dob: '12/02/1988',
    admin: false 
  }, 
  {
    name: 'Lisa', 
    role: 'Staff', 
    dob: '01/30/1965',
    admin: false 
  }, 
  {
    name: 'Marge', 
    role: 'Associate', 
    dob: '09/10/1980',
    admin: true 
  }
];
let namesAndRoles = (users) => users.map(p => ({Name: p.name, Role: p.role}));
console.log(namesAndRoles(users));

【讨论】:

    【解决方案2】:

    尝试将reducing users 数组转换为字符串

    const users = [
      {
        name: 'Homer', 
        role: 'Clerk', 
        dob: '12/02/1988',
        admin: false 
      }, 
      {
        name: 'Lisa', 
        role: 'Staff', 
        dob: '01/30/1965',
        admin: false 
      }, 
      {
        name: 'Marge', 
        role: 'Associate', 
        dob: '09/10/1980',
        admin: true 
      }
    ];
    
    console.log(users
      .reduce( (acc, val) =>
        `${acc}\nname: ${val.name}\nrole: ${val.role}\n`, ``)
      .trim()  // removes first \n)
    );

    【讨论】:

      猜你喜欢
      • 2017-09-19
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      相关资源
      最近更新 更多