javascript - შეადარე ორი JSON და შექმენი JSON საერთო მნიშვნელობით
მინდა შევქმნა ორი JSON მასივი საერთო თვისების მნიშვნელობის საფუძველზე, ორი JSON-ის შედარებით.
this.linkedParticipants =[
{
"id": 3,
"name": "Participant 2",
"email": "[email "
},
{
"id": 2,
"name": "Participant 1",
"email": "[email "
},
{
"id": 1,
"name": "Libin Varghese",
"email": "[email "
},
{
"id": 7,
"name": "Participant 5",
"email": "[email "
}
]
this.appointmentList = [
{
"id": 32,
"participant": {
"id": 1,
"name": "Libin Varghese",
"email": "[email "
}
},
{
"id": 33,
"participant": {
"id": 7,
"name": "Participant 5",
"email": "[email "
}
}
]
this.invitedList = [];
this.confirmedList = [];
let temp = {}
this.linkedParticipants.forEach((participant, i) => {
this.appointmentList.forEach((appointment, j) => {
if (appointment.participant.name.indexOf(participant.name)) {
temp = {
'participant': participant
}
this.invitedList.push(temp);
}
else {
this.confirmedList.push(appointment)
}
})
})
მაგრამ კოდი არ მუშაობს როგორც საჭიროა, რადგან this.invitedList ორი მნიშვნელობა იძლევა ორმაგ მნიშვნელობებს. მიმოხილვის პირობაში მგონი რაღაც პრობლემა მაქვს.
პასუხი #1
ამის მიღწევა შეგიძლიათ filter()-ის სხვადასხვა კომბინაციით:
var linkedParticipants =[
{
"id": 3,
"name": "Participant 2",
"email": "[email "
},
{
"id": 2,
"name": "Participant 1",
"email": "[email "
},
{
"id": 1,
"name": "Libin Varghese",
"email": "[email "
},
{
"id": 7,
"name": "Participant 5",
"email": "[email "
}
];
var appointmentList = [
{
"id": 32,
"participant": {
"id": 1,
"name": "Libin Varghese",
"email": "[email "
}
},
{
"id": 33,
"participant": {
"id": 7,
"name": "Participant 5",
"email": "[email "
}
}
];
var confirmedList = appointmentList.filter((a) => {
return linkedParticipants.find((p) => p.id === a.participant.id);
});
var invitedList = linkedParticipants.filter((p) => {
return !appointmentList.find((a) => p.id === a.participant.id);
});
console.log(confirmedList)
console.log(invitedList)პასუხი #2
შესაძლებელია გამოყენებით ფილტრისა და შედარების ფუნქციის.
var linkedParticipants =[
{
"id": 3,
"name": "Participant 2",
"email": "[email "
},
{
"id": 2,
"name": "Participant 1",
"email": "[email "
},
{
"id": 1,
"name": "Libin Varghese",
"email": "[email "
},
{
"id": 7,
"name": "Participant 5",
"email": "[email "
}
]
var appointmentList = [
{
"id": 32,
"participant": {
"id": 1,
"name": "Libin Varghese",
"email": "[email "
}
},
{
"id": 33,
"participant": {
"id": 7,
"name": "Participant 5",
"email": "[email "
}
}
]
function comparer(otherArray){
return function (current) {
return otherArray.filter(function(other) {
return other.id === current.id
}).length===0;
}
}
var invitedList = appointmentList.map(i=> {return i.participant});
var confirmedList=linkedParticipants.filter(comparer(invitedList ));
console.log(invitedList);
console.log(confirmedList)