Javascript 从给定的数组键创建对象数组

Javascript 从给定的数组键创建对象数组,javascript,arrays,reactjs,lodash,Javascript,Arrays,Reactjs,Lodash,我有这样的数组 const test = [ { student: { id : '1', Name: 'A' }, marks: {
 id: '2', Name: 'B'
} }, { student: {
 id : '3', Name: 'C' }, marks: { id: '4', Name: 'D' } } ] 现在,从这个对象数组中,我尝试创建两个diff数组,它们将具有单独的student和marks键 const student = [{"stu

我有这样的数组

const test = [
    { student: { id : '1', Name: 'A' }, marks: {
 id: '2', Name: 'B'
} }, 
    { student: {
 id : '3', Name: 'C' }, marks: { id: '4', Name: 'D' } }
]
现在,从这个对象数组中,我尝试创建两个diff数组,它们将具有单独的student和marks键

const student = [{"student":{"Id": {value: "A"}}}, {"student":{"Id": {value: "B"}}}]
还有分数

const marks = [{"marks":{"Id": {value: "C"}}}, {"marks":{"Id": {value: "D"}}}]
所以,我尝试的是

test.map((index,item) => {
    return [item.student] 
  })
有人能帮我吗


谢谢。

您希望返回一个新对象,而不是子数组

下面使用分解来简化返回的对象

常数测试=[ {学生:{id:'1',姓名:'A'},分数:{
id:'2',名称:'B'
} }, {学生:{
id:'3',名称:'C'},标记:{id:'4',名称:'D'} ] const students=test.map{student}=>{student} const marks=test.map{marks}=>{marks} 学生们
logmarks您希望返回一个新对象,而不是子数组

下面使用分解来简化返回的对象

常数测试=[ {学生:{id:'1',姓名:'A'},分数:{
id:'2',名称:'B'
} }, {学生:{
id:'3',名称:'C'},标记:{id:'4',名称:'D'} ] const students=test.map{student}=>{student} const marks=test.map{marks}=>{marks} 学生们
console.logmarks这一个可以工作,但我也必须添加新属性,其中包括value而不是id和Name。以及如何从同一映射函数返回两个新对象。为了使我的nswer在注释中变得简单,请使用另一个映射。或者创建两个数组,然后使用forEach并将每个对象推送到关联的其他属性的rrayAs…映射{student}=>{student,someProperty:someValue};因此,这将删除现有值并添加新属性。是的,这一个将起作用,但我也必须添加新属性,其中将是值而不是id和名称。以及如何从同一映射函数返回两个新对象。要使我的nswer在注释中变得简单,请使用另一个映射。或创建两个数组然后使用forEach并将每个对象推送到其他属性的关联数组中…map{student}=>{student,someProperty:someValue};因此,这将删除现有值并添加新的属性权限一般来说,这是一种不好的做法,尤其是当您使用MongoDB等数据库开始更改数据结构并将+属性名称id嵌套到id时,没有太多的含义或语义。在您的情况下,在更改控制台之前。logtest[0].student.id返回1.console.logstudent[0]之后。student.id.value返回A而不是1。通常,这是一种不好的做法,尤其是当您使用MongoDB之类的数据库开始更改数据结构并将+属性名id嵌套为id时,没有太多的语义或语义。在更改console之前的情况下。logtest[0].student.id返回1。在console.logstudent[0]之后。student.id.value返回A而不是1。