Javascript 如何变换对象数组?

Javascript 如何变换对象数组?,javascript,arrays,object,Javascript,Arrays,Object,我有个问题 我有一组对象: const iHaveThis=[{ 问题:“你叫什么名字?”, 答:"dda",, 填写的表格编号:15, }, { 问题:“你的电子邮件是什么?”, 答复:'sda@br.com', 填写的表格编号:15, }, { 问题:“你的电子邮件是什么?”, 答复:'dAS@be.bimc', 填写的表格编号:14, }, { 问题:“你叫什么名字?”, 答:"DAS",, 填写的表格编号:14, }, ];希望对您有所帮助 iHaveThat.map((v) =>

我有个问题

我有一组对象:

const iHaveThis=[{
问题:“你叫什么名字?”,
答:"dda",,
填写的表格编号:15,
},
{
问题:“你的电子邮件是什么?”,
答复:'sda@br.com',
填写的表格编号:15,
},
{
问题:“你的电子邮件是什么?”,
答复:'dAS@be.bimc',
填写的表格编号:14,
},
{
问题:“你叫什么名字?”,
答:"DAS",,
填写的表格编号:14,
},
];希望对您有所帮助

iHaveThat.map((v) => ({
   [v.question]:v.answer
}))
编辑

var obj = {};
iHaveThat.forEach((v) => {
 // Checking if the key is available in the object or not. 
 //If key isn't available it will create the object for the key.
 if(!obj[v.form_filled_key])
  obj[v.form_filled_key] = { }
 // If object is already created we will just add new field in the object
 obj[v.form_filled_key][v.question] = v.answer
})
// To convert object into array of objects.
obj = Object.values(obj)

您可以将对象设置为键控到
表单\u填充的\u键
。在循环中,使用键将对象添加到对象以对其进行分组。最后,您的解决方案将出现在您构建的对象的
Object.values()
中:

const iHaveThat=[
{问题:“你叫什么名字?”,回答:'dda',填写表格\键:15,},
{问题:“你的电子邮件是什么?”,回答:'sda@br.com,填写表格(编号:15),
{问题:“你的电子邮件是什么?”,回答:'dAS@be.bimc,填写表格(编号:14),
{问题:“你叫什么名字?”,回答:“DAS”,填写表格:14,},];
让arr=iHaveThat.reduce((obj,{form\u filled\u key,question,answer})=>{
//如果需要,请创建一个新条目
如果(!obj[form_filled_key])obj[form_filled_key]={}
//添加键值对
obj[表格填写的表格][问题]=答案
返回obj
},{})
//您只需要使用`values()中的数组`
让结果=对象值(arr)

console.log(结果)
使用
reduce

const iHaveThis=[{问题:“你叫什么名字?”,回答:'dda',填写表格\u键:15,},{问题:“你的电子邮件是什么?”回答:'sda@br.com,填写表格,答案:15,},{问题:“你的电子邮件是什么?”,回答:'dAS@be.bimc,填表:14,},{问题:“你叫什么名字?”,回答:'DAS',填表:14,}];
const res=Object.values(iHaveThis.reduce((a,{问题,答案,表单填充})=>{
(a[填写表格的表格]=a[填写表格的表格].[问题]=答案;
返回a;
}, {}));

控制台日志(res)
您还可以创建一个
ES6生成器
,通过
2
然后
数组对数组进行批处理。在其上减少

const arr=[
{问题:“你叫什么名字?”,回答:'dda',填写表格\键:15,},
{问题:“你的电子邮件是什么?”,回答:'sda@br.com,填写表格(编号:15),
{问题:“你的电子邮件是什么?”,回答:'dAS@be.bimc,填写表格(编号:14),
{问题:“你叫什么名字?”,回答:“DAS”,填写的表格编号:14,},
];
功能*批次(arr,n=2){
设i=0
而(i(r[c.question]=c.answer,r),{})
i+=n
}
}
让结果=[…批次(arr)]
console.log(result)
如果值不存在,可以使用
(object[key]=object[key]|{})
模式添加值:

const arr=[{问题:“你叫什么名字?”,回答:'dda',填写表格:15,},{问题:“你的电子邮件是什么?”回答:'sda@br.com,填写表格,答案:15,},{问题:“你的电子邮件是什么?”,回答:'dAS@be.bimc,填写表格:14,},{问题:“你叫什么名字?”回答:“DAS”,填写表格:14}]
常量结果=对象值(arr.reduce((o,v,i)=>
((o[i=v.form_filled_key]=o[i]| |{}[v.question]=v.answer,o),{}))

console.log(result)
@MarkMeyer是的,我修复了它,对不起,是表单填充了吗?在wither上键入确定字段,对象是否属于一起?如果是这样,你应该在问题中提及该标准,否则你需要解释什么是决定因素。因此,可能有一个或多个决定因素objects@PatrickEvans是的,这是一个表单填充键,它不会组合对象,只会产生一个1到1的转换,这不是在Hello Adill之后,谢谢你的回答。。我已经试过了,但正如Patrick所说,它没有结合对象。你应该添加一个描述/解释你的代码在做什么。代码转储不起作用。