我有一个数组,在每个作业对象中都有一个job
数组。
我想把每个对象的name
和同一个对象的jobTitle
结合起来创建一个新对象,并把它放在newArray
数组中。
我想对data
中的所有对象都这样做。
不幸的是,在循环
中没有找到jobTitle为了进一步指导,我在下面列出了expected output:
。
谢谢你的帮助。
const data =
[ { id: 5
, name: "Emma"
, job: [ { jobTitle: "Teacher", workExperience: 8 } ]
}
, { id: 5
, name: "Charlotte"
, job: [ { jobTitle: "programmer", workExperience: 3 } ]
}
, { id: 5
, name: "Amelia"
, job: [ { jobTitle: "Doctor", workExperience: 5 } ]
} ]
const newArray = [];
data.forEach(item => {
newArray.push({
name: item.name,
jobTitle: item.job.forEach(item => item.jobTitle)
})
})
console.log(newArray);
Expected output:
[
{ name: 'Emma', jobTitle: "Teacher" }
{ name: 'Charlotte', jobTitle: "programmer" }
{ name: 'Amelia', jobTitle: "Doctor" }
]
foreach
不返回任何东西,你正在寻找map()
:
jobTitle: item.job.map(item => item.jobTitle)
const data = [
{
id: 5,
name: "Emma",
job: [
{ jobTitle: "Teacher", workExperience: 8 }
]
}, {
id: 5,
name: "Charlotte",
job: [
{ jobTitle: "programmer", workExperience: 3 }
]
}, {
id: 5,
name: "Amelia",
job: [
{ jobTitle: "Doctor", workExperience: 5 }
]
},
]
const newArray = [];
data.forEach(item => {
newArray.push({
name: item.name,
jobTitle: item.job.map(item => item.jobTitle)
})
})
console.log(newArray);
{
"name": "Emma",
"jobTitle": [
"Teacher"
]
}
如果您想要一个字符串(如您的示例输出所示),我们可以join()
数组:
jobTitle: item.job.map(item => item.jobTitle).join(' ');
const data = [
{
id: 5,
name: "Emma",
job: [
{ jobTitle: "Teacher", workExperience: 8 }
]
}, {
id: 5,
name: "Charlotte",
job: [
{ jobTitle: "programmer", workExperience: 3 }
]
}, {
id: 5,
name: "Amelia",
job: [
{ jobTitle: "Doctor", workExperience: 5 }
]
},
]
const newArray = [];
data.forEach(item => {
newArray.push({
name: item.name,
jobTitle: item.job.map(item => item.jobTitle).join(' ')
})
})
console.log(newArray);
{
"name": "Emma",
"jobTitle": "Teacher"
}
如果输入数据语法绝对正确,则可以直接从item访问它,而不需要另一个循环,假设总是有一个作业。
const data = [
{
id: 5,
name: "Emma",
job: [
{ jobTitle: "Teacher", workExperience: 8 }
]
}, {
id: 5,
name: "Charlotte",
job: [
{ jobTitle: "programmer", workExperience: 3 }
]
}, {
id: 5,
name: "Amelia",
job: [
{ jobTitle: "Doctor", workExperience: 5 }
]
},
]
const newArray = [];
data.forEach(item => {
newArray.push({
name: item.name,
jobTitle: item.job[0].jobTitle
})
})
console.log(newArray);
你就快成功了。forEach
返回值为undefined
。这就是你有问题的原因。由于jobTitle
数组中只有一项,因此直接使用索引很容易实现。
const data =
[ { id: 5
, name: "Emma"
, job: [ { jobTitle: "Teacher", workExperience: 8 } ]
}
, { id: 5
, name: "Charlotte"
, job: [ { jobTitle: "programmer", workExperience: 3 } ]
}
, { id: 5
, name: "Amelia"
, job: [ { jobTitle: "Doctor", workExperience: 5 } ]
} ]
const newArray = [];
data.forEach(item => {
newArray.push({
name: item.name,
jobTitle: item.job[0].jobTitle
})
})
console.log(newArray);
Array.forEach
实际上不会像您期望的那样返回值,Array.map
会返回值,但它不适用于您的情况。
看到预期的结果只有一个值,您可以做的一件事就是从User的作业列表中获取第一个值。
例如:
data.forEach(item => {
newArray.push({
name: item.name,
jobTitle: item.job[0].jobTitle
})
})
也可以这样做:
const newArray = data.map(item => {
return { name: item.name, jobTitle: item.job[0].jobTitle }
})