如何转换对象数组结构并生成新对象发送后端?
解决方案
可以通过遍历原数组,逐个处理每个对象生成对应的两个question项,再组合成目标结构。以下是JavaScript实现代码:
const inputData = [ { "messageType": "test", "eligibleUsers": "test2", "rules": [ {"ruleId": "qwer", "value": "qwert"}, {"ruleId": "testing", "value": "testing"}, {"ruleId": "newtest", "value": "newtesting"} ] }, { "messageType": "add", "eligibleUsers": "newadd", "rules": [{"ruleId": "qaz", "value": "qaz"}] }, { "messageType": "neww", "eligibleUsers": "add", "rules": [ {"ruleId": "data", "value": "data1"}, {"ruleId": "data2", "value": "dat3"} ] } ]; // 初始化结果结构 const result = { questions: [] }; inputData.forEach((item, index) => { // 生成第一个question:基于messageType和ruleId const question1 = { ques: item.messageType, rules: item.rules.map(rule => ({ rule: rule.ruleId })) }; // 第一个对象的question1需要额外字段 if (index === 0) { Object.assign(question1, { id: null, type: "dropdown", message_user_type: "self" }); } result.questions.push(question1); // 生成第二个question:基于eligibleUsers和value const question2 = { ques: item.eligibleUsers, rules: item.rules.map(rule => ({ rule: rule.value })) }; // 第一个对象的question2需要额外字段 if (index === 0) { Object.assign(question2, { id: null, type: "dropdown", message_user_type: "emp" }); } result.questions.push(question2); }); console.log(JSON.stringify(result, null, 4));
代码说明
- 遍历原数组中的每个对象,每个对象会生成两个
question项; - 第一个
question的ques取自messageType,rules由原rules数组的ruleId转换而来; - 第二个
question的ques取自eligibleUsers,rules由原rules数组的value转换而来; - 仅原数组中第一个对象生成的两个
question需要添加id、type、message_user_type这三个额外字段。
运行上述代码后,输出结果与你期望的结构完全一致。
内容的提问来源于stack exchange,提问作者KnightSky
相关产品推荐
相关产品推荐

