Reputation: 1280
User Details
var UserDetails=[{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}]
Call Details
var CallSummary=[{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}]
Expected Result
var Result=[{"UserId":1,"Name":"Vineeth","UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"Name":"Sreena","UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}]
How to get this result, my code is ,
var UserDetails=[{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}]
var CallSummary=[{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}]
var UserSummary = [];
$.each(UserDetails, function(key, index) {
$.each(CallSummary, function(key, index1) {
if (index.UserId == index1.UserId) {
UserSummary.push({
UserId: index.UserId
});
UserSummary.push({
Name: index.Name
});
UserSummary.push({
TotalPerCalls: index1.UPerCalls
});
UserSummary.push({
TotalCallTime: index1.UTotalCallTime
});
UserSummary.push({
TotalPerCallTime: index1.UPerCallsTime
});
UserSummary.push({
TotalAvgCallTime: index1.UAvgCallTime
});
}
})
})
console.log(UserSummary);
How to solve this ???
Thank you
Upvotes: 0
Views: 90
Reputation: 39392
You can use native functions like .concat()
, .reduce()
and Object.assign()
to get this:
var UserDetails = [{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}];
var CallSummary = [{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}];
var result = Object.values(
UserDetails
.concat(CallSummary)
.reduce((r, c) => (r[c["UserId"]] = Object.assign({}, r[c["UserId"]], c), r), [])
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
References:
Upvotes: 1
Reputation: 323
It's Pretty simple: please write the logic as below
var UserDetails=[{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}];
var CallSummary=[{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}]
var array3 = CallSummary.filter(function(obj) { return UserDetails.indexOf(obj.UserId) == -1; });
console.log(array3);
Please see in here
Upvotes: 0
Reputation: 1401
You only need an iteration. By doing .map you loop through the Users and for each user, create a new object in the UserSummary array. Then inside that object you 'spread' the properties of both the UserDetails object corresponding to that user and the properties of CallSummary.
var UserDetails=[{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}];
var CallSummary=[{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}];
var UserSummary=UserDetails.map((user, index) => ({...user, ...CallSummary[index]}));
console.log(UserSummary);
Upvotes: 3
Reputation: 627
Please try the below code :) You need to assign the values to a temporary object and then push the object into the array.
var UserDetails=[{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}];
var CallSummary=[{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}];
UserSummary=[];
$.each(UserDetails, function(key, index) {
$.each(CallSummary, function(key, index1) {
if(index.UserId==index1.UserId){
var tempObject = {};
tempObject['UserId'] = index.UserId;
tempObject['Name'] = index.Name;
tempObject['TotalCalls'] = index1.TotalCalls;
tempObject['TotalPerCalls'] = index1.UPerCalls;
tempObject['TotalCallTime'] = index1.UTotalCallTime;
tempObject['TotalPerCallTime'] = index1.UPerCallsTime;
tempObject['TotalAvgCallTime'] = index1.UAvgCallTime;
UserSummary.push(tempObject);
}
})
})
console.log(UserSummary);
Upvotes: 1
Reputation: 30737
You need to do follow the steps like:
UserDetails
array to get each object in that arrayCallSummary
array with matching UserId
valueUserId
is same using Object.assign()
UserSummary
var UserDetails=[{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}];
var CallSummary=[{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}];
var UserSummary = [];
UserDetails.forEach((userDetail) => {
var callSummary = CallSummary.find(({UserId})=> UserId === userDetail.UserId);
var newObj = Object.assign(userDetail, callSummary);
UserSummary.push(newObj);
});
console.log(UserSummary);
Upvotes: 0
Reputation: 5522
Just use Object.assign({}, index, index1)
which return combined result of index
and index1
.
var UserDetails=[{"UserId":1,"Name":"Vineeth"},{"UserId":2,"Name":"Sreena"}]
var CallSummary=[{"UserId":1,"UPerCalls":"22 %","UTotalCallTime":"60:24 minutes","UPerCallsTime":"0 %","UAvgCallTime":"0:22 minutes"},{"UserId":2,"UPerCalls":"8 %","UTotalCallTime":"50373:16 minutes","UPerCallsTime":"50 %","UAvgCallTime":"839:33 minutes"}]
var UserSummary = [];
$.each(UserDetails, function(key, index) {
$.each(CallSummary, function(key, index1) {
if (index.UserId == index1.UserId) {
UserSummary.push(Object.assign({}, index, index1));
}
})
})
console.log(UserSummary);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Upvotes: 1