我想使用split方法分离并在javascript中映射一个对象

我想使用split方法分离并在javascript中映射一个对象,javascript,arrays,split,mapping,Javascript,Arrays,Split,Mapping,您好,我想了解如何使用split分离一个数组,该数组包含一个属性为空的对象,该属性的名称为course1、course2和course3。包含文本且内容中包含符号+的课程将它们分隔为具有拆分属性的数组,然后封装在名为“课程”的对象数组中,并将其课程标识符、学分和备注放入每个课程对象,最后将其显示为原始数组的对象 请帮帮我,谢谢 在这里,我正在做代码,但它不适合我 //这是我的数组 var校友:[ { “姓名”:“ivan hambi apaza”, “课程1”:“丹扎历史+2+16”, “课程

您好,我想了解如何使用split分离一个数组,该数组包含一个属性为空的对象,该属性的名称为course1、course2和course3。包含文本且内容中包含符号+的课程将它们分隔为具有拆分属性的数组,然后封装在名为“课程”的对象数组中,并将其课程标识符、学分和备注放入每个课程对象,最后将其显示为原始数组的对象

请帮帮我,谢谢

在这里,我正在做代码,但它不适合我

//这是我的数组
var校友:[
{
“姓名”:“ivan hambi apaza”,
“课程1”:“丹扎历史+2+16”,
“课程2”:“历史+3+17”,
“课程3”:“,
}
],
//我正在做的一个步骤,但它没有出来
校友(){
var newArr=[…this.alumno]
newArr.map(el=>{
返回el.course1=el.course1.split(+)
})
newArr.map(el=>{
返回el.course2=el.course2.split(+)
})
newArr.map(el=>{
返回el.course3=el.course3.split(+)
})
返回纽瓦尔
}

log(alumnoN())
我相信这应该适合您的要求

函数拆分alumno(alumno){
设finalList=[];
for(设i=0;i{
if(object[v].trim().length==0)返回;
让data=object[v].split('+');
让课程={
课程:数据[0],
信用:数据[1]?数据[1]:“”,
注:数据[2]?数据[2]:“”
};
formattedObject.courses.push(课程);
});
finalList.push(格式化对象);
}
回归终结者;
}
让校友=[
{
“姓名”:“ivan hambi apaza”,
“课程1”:“丹扎历史+2+16”,
“课程2”:“历史+3+17”,
“课程3”:“,
}
];

console.log(splitAlumno(alumno))我相信这应该适合您的要求

函数拆分alumno(alumno){
设finalList=[];
for(设i=0;i{
if(object[v].trim().length==0)返回;
让data=object[v].split('+');
让课程={
课程:数据[0],
信用:数据[1]?数据[1]:“”,
注:数据[2]?数据[2]:“”
};
formattedObject.courses.push(课程);
});
finalList.push(格式化对象);
}
回归终结者;
}
让校友=[
{
“姓名”:“ivan hambi apaza”,
“课程1”:“丹扎历史+2+16”,
“课程2”:“历史+3+17”,
“课程3”:“,
}
];

console.log(splitAlumno(alumno))请尝试此代码。使用一些不错的ES6功能(分解结构、对象属性值速记):

/'HISTORIA DE LA DANZA+2+16'=>{'course':'HISTORIA DE LA DANZA','credit':2,'note':16}
功能c2c(c){
if(c.length==0)返回null
var[课程、学分、注释]=c.split(“+”)
返回{课程、学分、笔记}
}
//{name:…,course1:…,course2:…,…}=>['HISTORIA DE LA DANZA+2+16',…]
函数o2cs(o){
//返回[o.course1,o.course2,o.course3]//足够吗???
var ret=[]
for(变量k in o){
如果(k.startsWith(“course”))返回推送(o[k])
}
回程网
}
//主对象转换函数
函数a2a(o){
var courses=o2cs(o)//从o中提取课程
courses=courses.map(c2c)//将字符串转换为对象
courses=courses.filter(布尔)//筛选非空的课程
返回{name:o.name,courses:courses}
}
//main函数,只映射数组
函数alumnoN(alumno){returnalumno.map(a2a)}
//试验
var校友=[
{
“姓名”:“ivan hambi apaza”,
“课程1”:“丹扎历史+2+16”,
“课程2”:“历史+3+17”,
“课程3”:“,
},
]
控制台日志(校友(校友))
console.log(校友(校友)[0]。课程)

试试这段代码。使用一些不错的ES6功能(分解结构、对象属性值速记):

/'HISTORIA DE LA DANZA+2+16'=>{'course':'HISTORIA DE LA DANZA','credit':2,'note':16}
功能c2c(c){
if(c.length==0)返回null
var[课程、学分、注释]=c.split(“+”)
返回{课程、学分、笔记}
}
//{name:…,course1:…,course2:…,…}=>['HISTORIA DE LA DANZA+2+16',…]
函数o2cs(o){
//返回[o.course1,o.course2,o.course3]//足够吗???
var ret=[]
for(变量k in o){
如果(k.startsWith(“course”))返回推送(o[k])
}
回程网
}
//主对象转换函数
函数a2a(o){
var courses=o2cs(o)//从o中提取课程
courses=courses.map(c2c)//将字符串转换为对象
courses=courses.filter(布尔)//筛选非空的课程
返回{name:o.name,courses:courses}
}
//main函数,只映射数组
函数alumnoN(alumno){returnalumno.map(a2a)}
//试验
var校友=[
{
“姓名”:“ivan hambi apaza”,
“课程1”:“丹扎历史+2+16”,
“课程2”:“历史+3+17”,
“课程3”:“,
},
]
控制台日志(校友(校友))
console.log(校友(校友)[0]。课程)

您可以使用
flatMap
reduce
以及自定义函数返回课程对象

var校友=[{姓名:“伊万·哈姆比·阿帕扎”,课程1:“丹扎历史+2+16”,课程2:“历史+3+17”,课程3:,}];
getspliob=(课程)=>
/\+/g、 测试(课程)//测试课程是否包含+
? ((ob=course.split(“+”),//拆分并获取数组
{课程:ob[0],学分:ob[1]| |“0”,注:ob[2]| |“0”}//build object
:{课程:co