循环访问对象并创建新数组

时间:2017-04-22 03:28:03

标签: javascript arrays

我有一个对象数组,我试图通过map函数遍历它们并按如下方式创建输出:

所需的输出

dataSet = [
 [John, Doe, Sales],
 [Jane, Doe, HR], 
 [Jack, Doe, Manager]
]

我的对象数组:

[[object],[object],[object]]

这是我到目前为止所尝试的内容:

 users.map((item) => {
  dataSet.push(item.profile.firstName, item.profile.role)
 })

然而我的输出:

["John","Jane","Jack"]

如何将每个循环推入新阵列?

谢谢

4 个答案:

答案 0 :(得分:2)

实际上,你非常接近。只需制作想要推送阵列的内容。请尝试以下代码:

users.forEach((item) => {
  dataSet.push([item.profile.firstName, item.profile.lastName, item.profile.role]);
});

答案 1 :(得分:1)

当您映射对象数组时,您应该返回一个包含所需值的数组。



const john = { firstName: 'John', lastName: 'Doe', role: 'Sales' }
const jane = { firstName: 'Jane', lastName: 'Doe', role: 'HR' }
const jack = { firstName: 'Jack', lastName: 'Doe', role: 'Manager' }
const users = [ john, jane, jack ]
const dataSet = users.map(user => ([ user.firstName, user.lastName, user.role ]))
console.log(dataSet)




答案 2 :(得分:1)

假设您的原始数据如下:

data: [
    ...
    {
        profile: {
            firstname: "John",
            lastname: "Doe",
            role: "Sales"
        }
    },
    ...
];

你可以这样做:

var dataSet = data.map((person) => {
    let profile = person.profile;
    return [
        profile.firstname,
        profile.lastname,
        profile.role
    ];
});

希望这有帮助!

答案 3 :(得分:0)

您可以通过使用 map 在对象上允许任意数量的属性,以更通用的方式执行此操作,例如



dataset = [
           {firstName: 'John', lastName: 'Doe', role: 'Sales'},
           {firstName: 'Jane', lastName: 'Doe', role: 'HR'},
           {firstName: 'Jack', lastName: 'Doe', role: 'Manager'}
          ];

var result = dataset.map(obj => Object.keys(obj).map(key => obj[key]));

console.log(result)




相关问题