我有一个快速的问题,我想把所有类似的专业人员转移到一个新创建的对象(结果)中,我已经编写了代码,但是所有的值都没有被移动。
const data = [
{
Name: 'Smith',
age: 25,
profession: 'Banker'
},
{
Name: 'Alex',
age: 28,
profession: 'IT'
},
{
Name: 'John',
age: 31,
profession: 'Banker'
},
{
Name: 'Harry',
age: 26,
profession: 'Nurse'
},
];
const result = {};我的密码在这里..。
const data = [ { Name: "Smith", age: 25, profession: "Banker" }, { Name: "Alex", age: 28, profession: "IT" }, { Name: "John", age: 31, profession: "Banker" }, { Name: "Harry", age: 26, profession: "Nurse" } ];
const result = {};
data.forEach(({ Name, age, profession }) => {
result[profession] = { Name, age };
});
console.log(result);
发布于 2022-08-27 07:03:42
在我上面的评论中,您的forEach内部应该是:
data.forEach(({ Name, age, profession }) => {
if (Array.isArray(result[profession])) {
result[profession].push({ Name, age })
} else {
result[profession] = [{ Name, age }]
}
});发布于 2022-08-27 07:07:50
您需要创建一个nested JSON,这意味着类似行业的对象数组。在迭代时,为每个行业创建一个数组,并使用.push()添加对象。代码如下所示
data.forEach(({Name,age,profession}) => {
result[profession] = result[profession] || [];
result[profession].push({Name,age});
});工作版本:
const data = [{
Name: "Smith",
age: 25,
profession: "Banker"
},
{
Name: "Alex",
age: 28,
profession: "IT"
},
{
Name: "John",
age: 31,
profession: "Banker"
},
{
Name: "Harry",
age: 26,
profession: "Nurse"
}
];
const result = {};
data.forEach(({
Name,
age,
profession
}) => {
result[profession] = result[profession] || [];
result[profession].push({
Name,
age
});
});
console.log(result);
发布于 2022-08-27 07:10:05
在遇到第一个具有某一职业的人之后,随后每一个具有相同职业的人都会覆盖前一个职业。相反,您应该创建一个数组,并将每个具有相同职业的人推入该数组。
首先,我们将检查当前的职业是否曾经遇到过。如果没有,我们将创建一个空数组来容纳所有从事这一职业的人。
if (!(profession in result)) {
result[profession] = []
}然后,由于数组现在保证存在于这一行业,我们可以将当前的人推入我们的新数组。下次遇到这个职业时,我们的第一次检查将被跳过,我们将把下一个人推到数组上。
result[profession].push({
Name,
age
})完整的例子:
const data = [{
Name: "Smith",
age: 25,
profession: "Banker"
}, {
Name: "Alex",
age: 28,
profession: "IT"
}, {
Name: "John",
age: 31,
profession: "Banker"
}, {
Name: "Harry",
age: 26,
profession: "Nurse"
}]
const result = {}
data.forEach(({
Name,
age,
profession
}) => {
if (!(profession in result))
result[profession] = []
result[profession].push({
Name,
age
})
})
console.log(result)
https://stackoverflow.com/questions/73508967
复制相似问题