Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环遍历对象并创建新数组_Javascript_Arrays - Fatal编程技术网

Javascript 循环遍历对象并创建新数组

Javascript 循环遍历对象并创建新数组,javascript,arrays,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)

我有一个对象数组,我试图通过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"]
如何将每个循环推入新阵列


谢谢

映射对象数组时,只需返回一个包含所需值的数组即可

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=[约翰、简、杰克]
const dataSet=users.map(user=>([user.firstName,user.lastName,user.role]))

log(数据集)
映射对象数组时,只需返回一个包含所需值的数组

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=[约翰、简、杰克]
const dataSet=users.map(user=>([user.firstName,user.lastName,user.role]))

console.log(数据集)
实际上,您已经非常接近了。只要做你想推的数组。请尝试以下代码:

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

事实上,你们很接近。只要做你想推的数组。请尝试以下代码:

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

假设您的原始数据如下所示:

data: [
    ...
    {
        profile: {
            firstname: "John",
            lastname: "Doe",
            role: "Sales"
        }
    },
    ...
];
您可以这样做:

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

希望这有帮助

假设原始数据如下所示:

data: [
    ...
    {
        profile: {
            firstname: "John",
            lastname: "Doe",
            role: "Sales"
        }
    },
    ...
];
您可以这样做:

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

希望这有帮助

您可以用一种更通用的方法来实现这一点,方法是允许使用map在对象上创建任意数量的属性,例如

dataset=[
{名字:'John',姓氏:'Doe',角色:'Sales'},
{名字:'Jane',姓氏:'Doe',角色:'HR'},
{名字:“杰克”,名字:“Doe”,角色:“经理”}
];
var result=dataset.map(obj=>Object.keys(obj.map)(key=>obj[key]);

console.log(result)
您可以通过使用map在对象上允许任意数量的属性来实现这一点,例如

dataset=[
{名字:'John',姓氏:'Doe',角色:'Sales'},
{名字:'Jane',姓氏:'Doe',角色:'HR'},
{名字:“杰克”,名字:“Doe”,角色:“经理”}
];
var result=dataset.map(obj=>Object.keys(obj.map)(key=>obj[key]);

console.log(result)
您是如何获得该输出的?实际输入是什么?看起来输出数组中应该有6个项,因为每次迭代要推送2个项。作为一种旁白,如果您没有使用
.map()
的返回值,那么您使用的
.map()
不正确,应该使用
.forEach()
相反。您的对象数组是包含对象的数组吗
[[{…}],{…}]
或对象数组
[{…},{…}]
您是如何获得该输出的?实际输入是什么?看起来输出数组中应该有6个项,因为每次迭代要推送2个项。作为一种旁白,如果您没有使用
.map()
的返回值,那么您使用的
.map()
不正确,应该使用
.forEach()
相反。您的对象数组是包含对象的数组吗
[[{…}],{…}]
,或者一个对象数组
[{…},{…}]
@4castle你敢绝对正确。我已经更新了it@4castle你敢说完全正确。我已经更新了