如果对象具有相同的string_id,如何合并输出文本



例如,如果我有一个像这样的数组对象

let arr = [
{
id: 'stringId_01',
model1: {
name: 'course_name1',
time: '10:00'
}
},
{
id: 'stringId_02',
model1: {
name: 'course_name2',
time: '11:00'
}
},
{
id: 'stringId_01',
model1: {
name: 'course_name3',
time: '09:00'
}
},
{
id: 'stringId_03',
model1: {
name: 'course_name_01',
time: '10:00'
}
}
]

我尝试以文本形式输出,以便我可以使用节点调度程序发送电子邮件通知。

我可以得到单个文本

的输出
output
- course_name1 10:00
- course_name2 11:00
- course_name3 09:00
- course_name_01 10:00

但是,在这种情况下,stringId_01的用户将收到两个单独的电子邮件通知。

如何得到这样的输出文本,以便stringId_01的用户将收到一个电子邮件通知

output
- course_name1 10:00, course_name3 09:00
- course_name2 11:00
- course_name_01 10:00

您可以使用Set和扩展语法获得唯一id,并使用Array.map循环遍历生成的数组。

在循环中,使用Array.filter来获取数组中具有相同id的项。Array.mapArray.join用于获得所需的输出字符串。

let arr=[{id:"stringId_01",model1:{name:"course_name1",time:"10:00"}},{id:"stringId_02",model1:{name:"course_name2",time:"11:00"}},{id:"stringId_01",model1:{name:"course_name3",time:"09:00"}},{id:"stringId_03",model1:{name:"course_name_01",time:"10:00"}}];

const uniqueIDs = [...new Set(arr.map(e => e.id))]
uniqueIDs.forEach(e => {
const str = '- ' + arr.filter(f => f.id == e).map(e => e.model1.name + ' ' + e.model1.time).join(', ')
console.log(str)
})

如果你想把它作为一个字符串:

let arr=[{id:"stringId_01",model1:{name:"course_name1",time:"10:00"}},{id:"stringId_02",model1:{name:"course_name2",time:"11:00"}},{id:"stringId_01",model1:{name:"course_name3",time:"09:00"}},{id:"stringId_03",model1:{name:"course_name_01",time:"10:00"}}];
const uniqueIDs = [...new Set(arr.map(e => e.id))]
const str = uniqueIDs.map(e => '- ' + arr.filter(f => f.id == e).map(e => e.model1.name + ' ' + e.model1.time).join(', ')).join('n')
console.log(str)

我将这样做:

var course={}
for(i=0;i<arr.length;i++){
var comma ="";
if(course[arr[i].id]=== undefined)
{
course[arr[i].id]="- "  ;
}
else
{
comma=", "  ;
}
course[arr[i].id]+=comma+(arr[i].model1.name + " " +arr[i].model1.time) ;
}
var result=""
for (var prop in course) {
result+=course[prop] +"n" ;
}
console.log(result);
console.log(course);

最新更新